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接口强大的地方.

画一个字体

效果图,画一个蓝色背景的字体。

相关伪代码:

 

上面例子完整的代码请看:

 

参考: