先看合成后的效果图。

需要的图片素材:

1.一张图片(335x600)

2.一张蒙版图片(335x600)

3.一张相框图片(335x600)

第一步,根据蒙板和图片,截取图片。而且所截取的图片之外的地方需要透明。

我提供的蒙版黑色区域外是透明的,那么需要蒙版黑色区域外显示透明色,黑色区域内显示照片就行了。

ImageMagick中合成图片有几种方式,其中convert命令下加上-composite参数可以合成图片。

以下摘自:www.189works.com/topic/a/tupianzhuanti/ImageMagick/chuji/2012/0229/34.html#fill

-composite
执行两张图像阿尔法通道的合并,还包括一个可选的蒙版。
根据当前的-compose设置,将第一张destination图像重叠至第二张source图像上。其中source图像的位置通过-geometry选项来设置。
如果存在第三张图像,它将被视为与destination图像相关的一个灰度蒙版。这个蒙版可以在destination图像中设置允许进行修改的区域。不过,对于displace合并方式,蒙版将用来提供一个单独的Y位移图像。
如果-compose选项需要更多的数字参数或标志,那么可以通过使用“-set 'option:compose:args'”来进行设置。
还有一些合并方式可以修改覆盖区域外的destination图像。你可以通过设置“-set 'option:compose:outside-overlay'”为false来禁止这种行为。

这里提到-compose。

-compose operator
设置图像合并类型。
可以参考阿尔法通道合并的讲解获得更详细的信息。
此设置会影响合并两个(或更多)图像操作命令对图像的处理方式。这些命令包括:-composite, -layers composite, -flatten, -mosaic, -layers merge, -border, -frame, -extent。
它也是composite命令的主要选项之一。

另外这里有一篇写的很好的博文,详细介绍了-compse的基本用法。

http://www.cnblogs.com/mfryf/archive/2012/02/12/2347975.html

如果以上都看完了,那么合成需要的图片基本没什么问题了。

第一步裁剪图片。

直接上命令:

convert mask-1.png -compose atop mask-0.png -geometry 355x600+0+0 -composite new.png

说明:

mask-1.png:蒙版图片。

mask-0.png:要合成的原始图片。

-geometry 355x600+0+0:这个参数指的是上层图片的大小和位置,355x600是图片的宽高,+0+0表示坐标(0,0)。

裁剪后的效果如下:

第二步,将生成的这张图与准备好的相框合成。

convert new.png -compose over 775_m.png -geometry 355x600+0+0 -composite new.png

说明:

775_m.png:相框图片。

运行完以后就出现上面的成品效果图了。

结束语:

ImageMagick开源项目是一套功能强大、稳定、免费和开源的图形图像处理工具集和开发包。最重要的是它曝露出来的接口可供多种开发语言调用。这一点就让人爽歪歪了。

最近在使用java语言处理一下图像,自己在网上搜罗了一些比较有价值的资料,整理一下。

●网络进行时的博客,对我帮助很大。很感激和佩服这位博主。

http://www.netingcn.com/category/imagemagick

●提供了ImageMagick的API的中文翻译,在不断更新。还有ImageMagick的论坛。

http://www.189works.com/topic/a/tupianzhuanti/ImageMagick/

http://www.ibm.com/developerworks/cn/opensource/os-imagemagick/#distributing

最重要的是ImageMagick的官方网站,这个不说网上搜一下就能搜到。

http://www.imagemagick.org/script/index.php

ImageMagick利用蒙版合成图片的更多相关文章

  1. 用imageMagick合成图片添加图片水印

    用imageMagick合成图片的方式大致有三种, 使用convert命令加 +append或-append参数 使用convert命令加 -composite参数 直接使用composite命令来完 ...

  2. 转: ImageMagick 命令行的图片处理工具(客户端与服务器均可用)

    http://www.imagemagick.com.cn/ 关于ImageMagick ImageMagick (TM) 是一个免费的创建.编辑.合成图片的软件.它可以读取.转换.写入多种格式的图片 ...

  3. 利用Photoshop修改图片以达到投稿要求

    摘自:http://www.dxy.cn/bbs/thread/8602152#8602152 利用Photoshop修改图片以达到投稿要求 软件版本为Photoshop CS V8.0.1(中文版) ...

  4. 利用bootstrap写图片轮播

    利用bootstrap写图片轮播 缺点是轮播没有固定样式图片样式会改变外框的大小,所以要再设置 以及左右按钮的style也要从新设置 <div class="carousel slid ...

  5. PHP合成图片、生成文字、居中对齐、画线、矩形、三角形、多边形、图片抗锯齿、不失真 高性能源码示例

    function generateImg($source, $text1, $text2, $text3, $font = './msyhbd.ttf') { $date = '' . date ( ...

  6. Android下利用Bitmap切割图片

    在自己自定义的一个组件中由于需要用图片显示数字编号,而当前图片就只有一张,上面有0-9是个数字,于是不得不考虑将其中一个个的数字切割下来,需要显示什么数字,只需要组合一下就好了. 下面是程序的关键代码 ...

  7. WPF利用Image实现图片按钮

    之前有一篇文章也是采用了Image实现的图片按钮,不过时间太久远了,忘记了地址.好吧,这里我进行了进一步的改进,原来的文章中需要设置4张图片,分别为可用时,鼠标悬浮时,按钮按下时,按钮不可用时的图片, ...

  8. [JavaScript] canvas 合成图片和文字

    Canvas Canvas 是 HTML5 新增的组件,就像一个画板,用 js 这杆笔,在上面乱涂乱画 创建一个 canvas <canvas id="stockGraph" ...

  9. PHP生成小程序二维码合成图片生成文字

    这部分代码是写在项目上的代码,THINKPHP3.1如果迁移到其他的地方应该要稍稍改动一下以适合自己的项目 function get_bbox($text,$fsize,$ffile){ return ...

随机推荐

  1. NSOJ 一个人的旅行(图论)

    虽然草儿是个路痴(就是在杭电待了一年多,居然还会在校园里迷路的人,汗~),但是草儿仍然很喜欢旅行,因为在旅途中 会遇见很多人(白马王子,^0^),很多事,还能丰富自己的阅历,还可以看美丽的风景……草儿 ...

  2. 背包问题 (DP)

    利用记忆化数组.记dp[i][j]为根据rec的定义,从第i个物品开始挑选总重小于j时,总价值的最大值. 递推式: dp[i][j]=0     (j<w[i]) dp[i][j] dp[i][ ...

  3. Linux命令学习篇0——原产地

    昨天在用curl发送简单的HTTP请求做測试的时候发现自己每次使用的时候都是在网络上查看别人的演示样例才干想起来怎么用,这样效率太低了.尽管有网络依旧在,可是总感觉不是被自己掌握着,心里不踏实,回忆起 ...

  4. 采用tcpdump攫Android网络数据包

    1 空灵的原理 tcpdump(需Root用户执行)拦截和显示发送或收到过网络连接到该机器的TCP/IP和其它数据包.简单说就监控手机进出网络数据. 2 方法优劣 2.1长处 1.手机数据包无遗漏 2 ...

  5. CSS3+HTML5特效9 - 简单的时钟

    原文:CSS3+HTML5特效9 - 简单的时钟 效果演示(加快了100倍)         实现原理 利用CSS3的transform-origin 及 transform 完成以上效果. 代码及说 ...

  6. 基OOP知识

    从今天开始,我开始总结GAO还通高老师<android道路的建筑师>,尝试一个星期写三个博客. 相对而言.看到这篇文章有点速度比你可以观看视频,刚才看的视频是更具体的.假设有兴趣,跟着我去 ...

  7. 编程算法 - 切割排序 代码(C)

    切割排序 代码(C) 本文地址: http://blog.csdn.net/caroline_wendy 排序切割, 把一个数组分为, 大于k\小于k\等于k的三个部分. 能够使用高速排序的Parti ...

  8. 我在Yahoo与ATS 九死一生的故事

    我在Yahoo与ATS 九死一生的故事 http://www.sunchangming.com/blog/post/4667.html 去年9月,我去Yahoo后领导交给我的第一件事,就是把Yahoo ...

  9. DRP学习进化模型

    曾经做的就是按照思维做的三级制,这是U .B ,D .坐在坐,开始增加设计模式,增加sqlhelper ,逐渐了解系统可分为只三层,层的,随着学习的不断深入明确了"为什么会出现分层" ...

  10. Web API 2:Action的返回类型

    Web API 2:Action的返回类型 Web API控制器中的Action方法有如下几种返回类型: void HttpResponseMessage IHttpActionResult 其它类型 ...