1.找一张需要加水印的图片,下载“美图秀秀”APP软件并打开,如图所示。
2.打开美图秀秀,选择点击【美化图片】,然后选择图片,点击图片下方的红框部分,点击【进入美化图片】选项按钮。
3.然后,在软件底部会出现很多具有不同效果选项按钮。用手指【向左滑动】功能变动,则出现“文字”。选择【文字】添加水印。
4.图片上方出现一个虚线框,虚线框里面有【点击输入文字】选项。可以在文字输入框中【输入】需要在照片上显示的文字,文字内容自己定义。
5.为文字增加样式。输入文字后,点击文字,出现样式功能功能板。可以在【样式】选项中,进行进行要调整,直到自己想要的为止,点击【完成】即可。
6.调整文字在照片上的显示位置。点击白色虚线框右边的【边线】,则可以任意拖动照片的倾斜度及显示位置。调整完毕,点击【保存/分享】即可,此时照片会保存到手机的相册里边。
拿到源图片,根据源图片尺寸调用UIGraphicsBeginImageContext方法将源图片绘制在画布上。
要想绘制出倾斜任意角度的文字首先我们需要将画布倾斜,这样画出来的文字可以和没有倾斜的图片形成角度对比,给人感官上文字是倾斜的。
Demo中采用CGContextConcatCTM方法旋转画布,但是笔者查阅资料发现该方法并不是绕着中心点旋转,而是绕着绘制原点(也就是初始值0,0)旋转。所以转出来是这样的效果。
如果在这样的画布上绘制水印很明显不是我们想要的。所以我们先将绘制原点平移到源图片区域的中心点,然后旋转角度,最后在按照之前平移的X轴,Y轴数据反方向平移回去。这样就能保证旋转完画布的中心点和源图片的中心点在同一位置。
注意:在旋转过后当前画布的X轴,Y轴方向也跟着旋转,所以再次平移可以回到中心点。
这样我们得到了一个倾斜的画布开始绘制文字就可以了,还需注意如果我们还按照源图片大小的区域去绘制水印文字难免会有空白的地方(我们不知道水印要旋转多少度),所以我们要保证不出现空白,采用以源图片中心点,长宽为源图片对角线长度的绘制区域。这样无论旋转多少度都不会出现空白。如下图:
Core Graphics是一个古老的基于C的绘图专用API,也被称为QuartZ或QuartZ 2D,是一个二维绘图引擎。真如我们所知UIView底层都是覆盖着一层CALayer,而这个CALayer正是在/System/Library/Frameworks/QuartzCore.framework中定义,所以几乎所有的UI控件都是基于Core Graphics完成的。想要自定制UI组件Core Graphics是个很不错的选择。当然还有基于它封装的上层API UIBezierPath。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)