好贷网好贷款

imagemagick图片裁剪

发布时间:2016-12-4 5:58:49 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"imagemagick图片裁剪",主要涉及到imagemagick图片裁剪方面的内容,对于imagemagick图片裁剪感兴趣的同学可以参考一下。

为了减少图片带来的网络带宽的开销,决定裁剪图片。imagemagick这个库很好用。 ImageMagick是用C语言开发图片处理程序。可以对图片进行改变大小、旋转、锐化、减色或增加特效等操作。对图片的操作,即可以通过命令行进行,也可以用C/C++、Perl、Java、PHP、Python或Ruby编程来完成。 ImageMagick 的官网是:http://www.ImageMagick.org/script/index.php ImageMagick为php语言提供的两个扩展IMagick和MagickWand for PHP的安装。IMagick已经被php最新的版本选为内部的扩展函数库,php的手册已经有了函数说明使用文档。这个扩展是可选安装的。 ImageMagick有两款接口,分别是MagickCore API和MagickWand API。MagickCore API是全面的底层的接口,而MagickWand API 是官方推荐的精选的重要的一些接口。IMagick和MagickWand for PHP就是分别为这两款接口而准备的。 IMagick: 一个可以供PHP调用ImageMagick功能的PHP扩展。使用这个扩展可以使PHP具备和ImageMagick相同的功能。 利用ImageMagicK的convert命令,能很方便的实现图片的放大缩小,可以进行等比例缩放,也能缩放到指定的固定大小。缩放的参数resize,由它来指定缩放后图片的宽高,比如“200×100”。 等比缩放 例如把图片a.jpg缩放到200×100的尺寸,可以用命令: convert -resize 200×100 src.jpg dest.jpg 注意:虽然明确指定了图片大小为200×100,但dest.jpg的不一定就是200×100,因为是等比缩放的,dest.jpg大小取决原始图片比例。假设src.jpg的大小是500×200,那么缩放后dest.jpg的真实大小为200×80,再比如src.jpg的大小是300×200,缩放后的尺寸为150×100。原则是缩放后的尺寸最少有一个是符合宽或高,且另外一个不能大于指定的参数中对应的宽或高。另外可以通过只指定宽或高的方式来进行缩放。例如: convert -resize 200 src.jpg dest.jpg 得到图片宽为200,高根据原始图片比例计算而来 convert -resize x100 src.jpg dest.jpg 得到的图片高位100,宽根据原始图片比例计算而来 固定宽高缩放。即不考虑原是图宽高的比例,把图片缩放到指定大小。例如命令: convert -resize 200x100! src.jpg dest.jpg 说明:区别是宽高后面多了一个叹号,此时不管原图片比例如何,缩放后的图片大小都是200×100,这样就可能导致图片变形。注意:在linux环境对参数需要用单引号引起来,而windows下又不能使用单引号。 有条件缩放。可以通过>或<符号来控制原始图片是否进行缩放,例如在处理一批尺寸大小各异的图片,只想把尺寸大于给定的值图片才进行缩小,如果没有指定条件,可能会把那些小的图片进行了放大处理。 convert -resize "200x100>" src.jpg dest.jpg 注解:只有当src.jpg的宽大于200或高大于100时候,才进行缩小处理, 否则生成的dest.jpg和src.jpg具有一样的尺寸。 注意在linux下要用单引号替换成双引号,即'200x100>'。 convert -resize "200x100<" src.jpg dest.jpg 注解:只有当src.jpg的宽小于200或高小于100时候,才进行放大处理, 否则生成的dest.jpg和src.jpg具有一样的尺寸。 注意在linux下要用单引号替换成双引号,即'200x100<' 上述两种有条件缩放是按原始图等比例缩放的,也就是对符合条件的图片进行等比缩放。同时有条件缩放也可以与固定大小缩放联合起来用。例如如下命令。 convert -resize "800x100>!" src.jpg dest.jpg 注解:假设src.jpg尺寸是300x200。很显然src.jpg的高(200)是大于指定值高(100), 符合缩小的条件,由于执行的不是等比缩放, 所以dest.jpg的尺寸理论上是800x100,由于执行是缩小操作 显然800是超过原始图片宽的,故dest.jpg的宽只能是300 convert -resize "10x1000<!" src.jpg dest.jpg 注解:假设src.jpg尺寸是300x200,src.jpg的高(200)小于指定值高(1000), 因此该命令将执行放大图片操作,dest.jpg的高将放到到1000, 由于目标图片宽比原始图片还小,但是执行的是放大操作,因此只能用原始图片的宽, 所以得到的dest.jpg的尺寸是300x1000。 裁剪所有采集图片: function myscandir($pathname){     foreach( glob($pathname) as $filename ){         if(is_dir($filename)){             myscandir($filename.'/*');         }else{             $arr = explode(".",$filename);             $new_filename=$arr[0]."_m.".$arr[1];             $min_filename = $arr[0]."_s.".$arr[1];             if(!file_exists($new_filename)){                 exec("convert -resize '240x340>' -strip  -quality 70% {$filename} {$new_filename}");             }             if(!file_exists($min_filename)){                 exec("convert -resize '125x170>' -strip  -quality 60% {$filename} {$min_filename}");             }         }     } } myscandir("/data_disk/webdata/movie/wwwroot/upload/cut_images/01/*");

上一篇:英语篇
下一篇:面试题中常见的String类问题

相关文章

相关评论