image/draw 包仅仅定义了一个操作:通过可选的蒙版图(mask image),把一个原始图片绘制到目标图片上,这个操作是出奇的灵活,可以优雅和高效的执行很多常见的图像处理任务。
第一个函数Draw是没有使用蒙版mask的调用方法,它内部其实就是调用的mask为 nil的方法。
它的参数描述如下:
- dst 绘图的背景图。
- r 是背景图的绘图区域
- src 是要绘制的图
- sp 是 src 对应的绘图开始点(绘制的大小 r变量定义了)
- mask 是绘图时用的蒙版,控制替换图片的方式。
- mp 是绘图时蒙版开始点(绘制的大小 r变量定义了)
- op Op is a Porter-Duff compositing operator. 参考文章:http://blog.csdn.net/ison81/article/details/5468763
下图就是几个相关的例子:
mask 蒙版是渐变
给一个矩形填充颜色使用 Draw方法的逻辑效果图:
代码:
拷贝图片的一部分效果特效如下:
相关代码:
如果是复制整个图片,则更简单:
图片滚动效果效果如下图:
假设我们需要把图片 m 上移20个像素.
相关代码:
把一个图片转成RGBA格式效果图:
相关代码:
通过蒙版画特效效果图
相关代码
注意,一个image对象只需要实现下面几个就可,这也就是Go接口强大的地方.
画一个字体效果图,画一个蓝色背景的字体。
相关伪代码:
上面例子完整的代码请看:
参考: