LOFTER for ipad —— 让兴趣,更有趣

点击下载 关闭
0岁产品经理养成日记 0岁产品经理养成日记 的推荐 me0mj.lofter.com
LOFTER官方博客
照片书冲印调研开始啦~ 这次召...

照片书冲印调研开始啦~

这次召集的是摄影师、摄影爱好者、当然还有热爱拍照的亲们!



照片书留下你的美好时光!
参与调研有机会获得30元网易印象派现金券!

>>详情请戳这

照片书冲印调研开始啦~

这次召集的是摄影师、摄影爱好者、当然还有热爱拍照的亲们!



照片书留下你的美好时光!
参与调研有机会获得30元网易印象派现金券!

>>详情请戳这

LOFTER官方博客
用灵魂的力量感恩——LOFTE...

用灵魂的力量感恩——LOFTER灵魂画师感恩节召集令


所谓灵魂画师,他们的每一幅画,在乎的不是画面优美,而是走心!

LOFTER的灵魂画师们,用你的灵魂之力,画出你任何想感恩的人或事吧!

我们会在5天后抽取一位真·灵魂画师,送上一盒灵魂画师专用木物语2B铅笔哦~

港针,奖品还是小编 @LOFTER全球善待二次元组织  上个星期自己人肉从香港诚品带回来的,绝对日本原装正品。

我们真的用灵魂感恩每一位用户呢!

戳参与→ 用灵魂的力量感恩

用灵魂的力量感恩——LOFTER灵魂画师感恩节召集令


所谓灵魂画师,他们的每一幅画,在乎的不是画面优美,而是走心!

LOFTER的灵魂画师们,用你的灵魂之力,画出你任何想感恩的人或事吧!

我们会在5天后抽取一位真·灵魂画师,送上一盒灵魂画师专用木物语2B铅笔哦~

港针,奖品还是小编 @LOFTER全球善待二次元组织  上个星期自己人肉从香港诚品带回来的,绝对日本原装正品。

我们真的用灵魂感恩每一位用户呢!

戳参与→ 用灵魂的力量感恩

LOFTER官方博客
LOFTER新一轮面基又来啦!...

LOFTER新一轮面基又来啦!

这次召集的是明星粉丝,特别欢迎有组织管理创作经验的小伙伴哈。地点还是在杭州,访谈时间在4月份。如果你是哪家明星的铁粉,可以填个问卷告诉我们哦~

详情请戳:

电脑版>>http://survey2.163.com/html/star_user/paper.html

手机版>>http://survey2.163.com/htmlmobile/star_user/paper.html

最后面谈的小伙伴会得到200元的报酬,来来来,约起来~~


LOFTER新一轮面基又来啦!

这次召集的是明星粉丝,特别欢迎有组织管理创作经验的小伙伴哈。地点还是在杭州,访谈时间在4月份。如果你是哪家明星的铁粉,可以填个问卷告诉我们哦~

详情请戳:

电脑版>>http://survey2.163.com/html/star_user/paper.html

手机版>>http://survey2.163.com/htmlmobile/star_user/paper.html

最后面谈的小伙伴会得到200元的报酬,来来来,约起来~~


LOFTER官方博客
 【今日推荐】人气时尚博主 @...

 【今日推荐】人气时尚博主 @MAGIC YANG 杨梦晶始终游走在时尚边缘,热衷于分享美好的生活时尚以及正能量,坚持贴近生活的时尚观和搭配;撰有时尚畅销书《成为时尚达人?谁都可以!》。“实用的时尚是来源于生活,用穿衣打扮取悦自己,用时尚改变生活质量”是她坚持的生活时尚理念。如果你想了解更多的时尚搭配理念,不妨去她的主页看看~

戳→_→关注 @MAGIC YANG 

 【今日推荐】人气时尚博主 @MAGIC YANG 杨梦晶始终游走在时尚边缘,热衷于分享美好的生活时尚以及正能量,坚持贴近生活的时尚观和搭配;撰有时尚畅销书《成为时尚达人?谁都可以!》。“实用的时尚是来源于生活,用穿衣打扮取悦自己,用时尚改变生活质量”是她坚持的生活时尚理念。如果你想了解更多的时尚搭配理念,不妨去她的主页看看~

戳→_→关注 @MAGIC YANG 

LOFTER官方博客
【今日推荐】@HUIHUI 也...

【今日推荐】@HUIHUI 也是一位执着的早餐记录者。正如LOFTER话题#吃早饭的才是人生赢家# 所表达的含义一样,每天坚持为自己和家人精心准备早餐,让你爱的人一起床就能发现生活的美好,何尝不算“赢家”? @HUIHUI 每日更新早餐日记,不妨每天去她的主页看看。

点击这里关注 @HUIHUI

【今日推荐】@HUIHUI 也是一位执着的早餐记录者。正如LOFTER话题#吃早饭的才是人生赢家# 所表达的含义一样,每天坚持为自己和家人精心准备早餐,让你爱的人一起床就能发现生活的美好,何尝不算“赢家”? @HUIHUI 每日更新早餐日记,不妨每天去她的主页看看。

点击这里关注 @HUIHUI

LOFTER官方博客
#晒周边得SHCC门票# ↑↑...

#晒周边得SHCC门票#

↑↑↑戳上面标题参与话题

人人都能参与的获得免费SHCC门票的机会来啦!2015年4月7日至2015年4月21日,在LOFTER晒出你拥有的动漫影视周边,如同人本、画集、兵人、手办、海报等等,就会有免费的SHCC一日票掉落哦,面基见男神,快来玩一发!

PS:获奖机会人人均等,每周随机抽五张,共十张 ( •̀∀•́ )


#晒周边得SHCC门票#

↑↑↑戳上面标题参与话题

人人都能参与的获得免费SHCC门票的机会来啦!2015年4月7日至2015年4月21日,在LOFTER晒出你拥有的动漫影视周边,如同人本、画集、兵人、手办、海报等等,就会有免费的SHCC一日票掉落哦,面基见男神,快来玩一发!

PS:获奖机会人人均等,每周随机抽五张,共十张 ( •̀∀•́ )


LOFTER官方博客
#我与世界只差一个你# ↑↑↑...

#我与世界只差一个你#

↑↑↑戳上面标题获得贴纸

你与世界只差一个谁?差一个最好的爱人、朋友、亦或者亲人,用这枚贴纸圈出你最牵挂的人,分享到微博微信赢鲜肉作家 @张皓宸 的签名书及丰富周边礼品。 

#我与世界只差一个你#

↑↑↑戳上面标题获得贴纸

你与世界只差一个谁?差一个最好的爱人、朋友、亦或者亲人,用这枚贴纸圈出你最牵挂的人,分享到微博微信赢鲜肉作家 @张皓宸 的签名书及丰富周边礼品。 

水色

发现并解决问题

接手这个团队之初时lofter的签名是发现并解决问题,

到现在为止一年了,解决了多少问题,又还有多少问题没解决?同时又带来了多少问题?


虽然重构了流程,独立的把前端资源从项目中摘出来单独处理,并且补充建立了前端的测试环境,还解决了资源的合并压缩等,以及反向调试等功能;

虽然创建了自动化测试系统,对业务做了足够的保证,同时还单独摘出截图功能做了对比;

虽然创建了大量的复用代码碎片;


但是还有太多的事情没有解决,在这儿记录一下,当做今年的目标:

1:加强本地开发环境,从vm代码开始开发和调试

2:创建代码碎片管理的系统,兼容各种写法的代码片段

3:升级发布功能,增加收集器功能

4:调整cms代码框架,把所有代码按照...

接手这个团队之初时lofter的签名是发现并解决问题,

到现在为止一年了,解决了多少问题,又还有多少问题没解决?同时又带来了多少问题?


虽然重构了流程,独立的把前端资源从项目中摘出来单独处理,并且补充建立了前端的测试环境,还解决了资源的合并压缩等,以及反向调试等功能;

虽然创建了自动化测试系统,对业务做了足够的保证,同时还单独摘出截图功能做了对比;

虽然创建了大量的复用代码碎片;


但是还有太多的事情没有解决,在这儿记录一下,当做今年的目标:

1:加强本地开发环境,从vm代码开始开发和调试

2:创建代码碎片管理的系统,兼容各种写法的代码片段

3:升级发布功能,增加收集器功能

4:调整cms代码框架,把所有代码按照全局-->频道-->项目的层级来划分并归类

5:大力普及html5,css3,并在项目中更多的试用

6:通过pv,uv,cdn日志等数据来优化前端框架

7:打造技术空间,创造技术团队氛围





pm163

使用canvas创建ios图标风格的图片

大家都知道canvas很好很强大,入门资料可以看mozilla developer center的Canvas教程,在这里就不多说了。

这里只是希望利用canvas的图像处理功能来创建ios图标风格的图片,就像下面这样:

[图片]


接下来就开始吧:

  1. 准备原始图片
    [图片]
    将它绘制到canvas里的方法也很简单,首先在html中得有一个canvas标签:
    <canvas id="mycanvas" width="437" height="400"></canvas>
    然后是javascript代码:
    var......

大家都知道canvas很好很强大,入门资料可以看mozilla developer center的Canvas教程,在这里就不多说了。

这里只是希望利用canvas的图像处理功能来创建ios图标风格的图片,就像下面这样:


接下来就开始吧:

  1. 准备原始图片

    将它绘制到canvas里的方法也很简单,首先在html中得有一个canvas标签:
    <canvas id="mycanvas" width="437" height="400"></canvas>
    然后是javascript代码:
    var context = document.getElementById("mycanvas").getContext("2d");
    var img = new Image(); 
    img.onload = function(){
        context.drawImage(img, 0, 0);
    }; 
    img.src='http://www.lofter.com/blog/shellchine/new/text/chihuo.png';
  2. 为图片裁剪圆边,简单的思路就是在canvas中画个圆角矩形clip一下,但问题是canvas没有给我们提供原生的圆角矩形函数,只好自己动手,丰衣足食了,先是定义一个圆角矩形绘制方法,然后用它来对canvas裁剪一下边界:
    CanvasRenderingContext2D.prototype.roundRect = function (x, y, w, h, r) {
        if (w < 2 * r) r = w / 2;
        if (h < 2 * r) r = h / 2;
        this.beginPath();
        this.moveTo(x+r, y);
        this.arcTo(x+w, y,   x+w, y+h, r);
        this.arcTo(x+w, y+h, x,   y+h, r);
        this.arcTo(x,   y+h, x,   y,   r);
        this.arcTo(x,   y,   x+w, y,   r);
        this.closePath();
        return this;
    };
    context.roundRect(0, 0, 437, 400, 40).clip();
    得到的效果如下:

  3. 接下来为图片添加高亮效果,基本思路是使用蒙板图片叠加。说起来很简单,但这个图片叠加里是有很多讲究的,用不好的话就是差之毫厘,谬以千里了。
    首先我们得了解canvas为我们提供了哪些图片叠加方法,以下表格列出了目前canvas中可用的globalCompositeOperation,可将你的canvas context对象设置globalCompositeOperation属性为以下的任何一个值(默认为source-over)。图中蓝色矩形表示原有内容(destination),红色圆形表示新图形(source):

    source-over: 默认设置,新图形会覆盖在原有内容之上

    Image:Canvas_composite_srcovr.png

    destination-over: 在原有内容之下绘制新图形

    Image:Canvas_composite_destovr.png

    source-in: 新图形会仅仅出现与原有内容重叠的部分。其它区域都变成透明的

    Image:Canvas_composite_srcin.png

    destination-in: 原有内容中与新图形重叠的部分会被保留,其它区域都变成透明的

    Image:Canvas_composite_destin.png

    source-out: 只有新图形中与原有内容不重叠的部分会被绘制出来

    Image:Canvas_composite_srcout.png

    destination-out: 原有内容中与新图形不重叠的部分会被保留

    Image:Canvas_composite_destout.png

    source-atop: 新图形中与原有内容重叠的部分会被绘制,并覆盖于原有内容之上

    Image:Canvas_composite_srcatop.png

    destination-atop: 原有内容中与新内容重叠的部分会被保留,并会在原有内容之下绘制新图形

    Image:Canvas_composite_destatop.png

    lighter: 两图形中重叠部分作加色处理

    Image:Canvas_composite_lighten.png

    darker: 两图形中重叠的部分作减色处理
    (注:新的canvas标准已无此定义).

    Image:Canvas_composite_darken.png

    xor: 重叠的部分会变成透明

    Image:Canvas_composite_xor.png

    copy: 只有新图形会被保留,其它都被清除掉

    Image:Canvas_composite_copy.png

    现在我们再拿出要叠加到原始图片的蒙板图,是个半透明的灰度图(这张图是用imagemagick生成的,ps当然也可以,有闲再写下怎么用canvas来画),如下:

    对照前面的列表看来,在canvas默认提供的图片叠加方法,可能符合我们要求的也只有默认的source-over了,虽然觉得不是想要的,还是硬着头皮试试吧:

  4. 试完了,果然发现,这真的不是我们想要的~~~
    看来canvas默认提供的图片叠加效果是没戏了。幸好canvas同时还提供了图片像素级操作的接口,我们可以用它来实现更复杂的图片叠加算法,如Multiply, Screen, Bumpmap, Divide, Plus, Minus, ModulusAdd, ModulusSubtract, Difference, Exclusion, Lighten, Darken 等等。在这里,我们只需要实现Screen算法。
    实现算法前,首先看看我们要用到像素级的操作方法,包括:
    • createImageData(w,h):可以新建一个w*h尺寸的新的ImageData,不过也可以使用参数(anotherImageData)来创建【firefox5开始支持】。
    • getImageData(x,y,w,h):表示起点x,y,尺寸w,h。可以获取canvas.context中在参数范围内的ImageData。
    • putImageData(ImageData, dx, dy [, DirtyX] [, DirtyX] [, DirtyWidth] [, DirtyHeight]):imageData包含了图像的width,height, 还有一个CanvasPixelArray。dx, dy表示绘图起始位置。相对于canvas区域左上角。后面四个可选参数:表示可见区范围。相对于起绘点,即上面的参数dx,dy表示的点。缺省为0,0,ImageData.width,ImageData.height。
    然后再了解一下什么是Screen算法,简单地说,这是一种像素级别的图形运算,就是将原图和新图的像素值(0-255)进行数学计算后得到最终图像的像素值,以Screen为例,就是Final = 1-(1-Src)*(1-Dest)
    实现函数如下:
    function imageData(url, fn){
        var canvas = document.createElement("canvas");
        var ctx = canvas.getContext("2d");
        var img = new Image();
        img.onload = function(){
            var ht = img.height;
            var width = img.width;
            canvas.width = width;
            canvas.height = ht;
            ctx.drawImage(img, 0, 0);
            if(typeof fn == 'function'){
                fn(ctx.getImageData(0,0,width, ht));
            }
        };
        img.src = url;
    }

    imageData('chihuo_r.png', function(data1){
        imageData('ios-over.png', function(data2){
            var pix1 = data1.data;
            var pix2 = data2.data;
            for (var i = 0,n = pix1.length; i < n; i+=4) {
                var alpha = pix2[i+3]/255;
                for(var j = i; j < i+3; j++){
                    pix1[j] = 255*(1-(1-pix1[j]/255)*(1-pix2[j]*alpha/255));
                }
            }
            var context = document.getElementById("mycanvas").getContext("2d");
            context.putImageData(data1,0,0);
        });
    });
    这次得到的效果正是文章开头所示的样子了。

这个例子只是canvas图像处理功能的牛刀小试,事实上,利用canvas提供的像素级操作方法,我们便可以封装出大量的图像处理滤镜,实现photoshop的许多酷炫的特效,这是后话,暂且不表。