在使用php开发之中大家都习惯使用gb类库来处理图像信息,但是函数很多的gb类库也是很头疼,使用起来要一个个的查询函数和看官方手册,下面将介绍一个很强大的图像处理工具----ImageMagick,这个在liunx下面处理图像信息将会更简洁。
先看一下百度百科的介绍:
ImageMagick是一套功能强大、稳定而且免费的工具集和开发包,可以用来读、写和处理超过89种基本格式的图片文件,包括流行的TIFF、JPEG、GIF、 PNG、PDF以及PhotoCD等格式。利用ImageMagick,你可以根据web应用程序的需要动态生成图片, 还可以对一个(或一组)图片进行改变大小、旋转、锐化、减色或增加特效等操作,并将操作的结果以相同格式或其它格式保存。对图片的操作,即可以通过命令行进行,也可以用C/C++、Perl、Java、PHP、Python或Ruby编程来完成。同时ImageMagick提供了一个高质量的2D工具包,部分支持SVG。现在,ImageMagic的主要精力集中在性能、减少bug以及提供稳定的API和ABI上。
功能
1. 将图片从一个格式转换到另一个格式,包括直接转换成图标。
2. 改变尺寸、旋转、锐化(sharpen)、减色、图片特效
3. 缩略图片的合成图( a montage of image thumbnails)
4. 适于web的背景透明的图片
5. 将一组图片作成gif动画,直接convert
将几张图片作成一张组合图片,montage
在一个图片上写字或画图形,带文字阴影和边框渲染。
8. 给图片加边框或框架
9. 取得一些图片的特性信息
10,几乎包括了gimp可以作到的常规插件功能。甚至包括各种曲线参数的渲染功能。只是那命令的写法,够复杂。 ImageMagick几乎可以在任何非专有的操作系统上编译,无论是32位还是64位的CPU,包括LINUX,Windows '95/'98/ME/NT 4.0/2000/XP, Macintosh (MacOS 9 /10), VMS 和 OS/2.
安装:
ImageMagick提供多个版本 liunx, mac, win 都可以使用
具体的安装和下载可以查考官网:http://www.imagemagick.org/script/index.php
下面是对其比较常用的功能介绍:
1.对用户上传图片进行缩放 对于用户自己上传的图片不能简单的 用css限制大小,因为这样每次加载图片时候还是会加载整幅大图。占用多余的宽带,并且影响页面加载速度。应该根据实际显示需要进行缩放。比如我想要用户相册里的图片大小不能超过500x300: 用ImageMagick处理起来很简单 Im代码
2.生成不同比例缩略图 一般相册等应用,都会提供缩略图和预览图,这些缩略图同样不能简单的用css来限制大小,要为每个图片生成不同比例的预览图。
3.去除多余信息 Exif信息是数码相机在拍摄过程中采集的一系列信息,这些信息放置在我们熟知的jpg文件的头部,也就是说Exif信息是镶嵌在JPEG图像文件格式内的一组拍摄参数,主要包括摄影时的光圈、快门、ISO、日期时间等各种与当时摄影条件相关的讯息,相机品牌型号,色彩编码,拍摄时录制的声音以及全球定位系统(GPS)等信息。简单的说,它就好像是傻瓜相机的日期打印功能一样,只不过Exif信息所记录的资讯更为详尽和完备。不过,具有Exif信息的JPEG图像文件要比普通的JPEG文件略大一点。还有就是像PS这种软件处理过的图片会有“program
comments”。如果不是专业的摄影类网站,这些信息是没有用的,可以去掉:
Im代码
4.调节压缩比 大多时候,我们的网站并不需要那么清晰的图片,适量调节JPG图片的压缩比会减少图片大小,肉眼并不会分辨出质量被压缩后的图片。通常75%是最佳比例。
Im代码
上面几个步骤可以一次搞定:
Im代码
上面说的都是针对JPG格式的处理方式,下面说一下BMP,GIF,PNG等格式的处理。 对于BMP直接转成JPG就可以了。再按照上面的方式处理。 而GIF和PNG貌似有些特殊。GIF的一些特性(动画效果,透明等)是JPG没有的,可以根据实际情况选择转或不转,如果转换成jpg,取第一帧只需要这样:
Im代码
PNG也可以通过减少PNG图片color数量的办法达到压缩的目的。但是这种办法压缩出来的图像可以明显看出来失真,而且呈锯齿状。 对于真实世界的PNG图片(通常指照片),一般先转换成JPG,再通过上面的办法来压缩。 但是要注意一点,透明或半透明的PNG图片在转换成JPG时透明部分会变成黑色。。。建议做用户头像时候不要转成JPG。。很难看~~~ 本人头像就是深受毒害。。 关于图片扩展名 发现大部分网站喜欢把用户上传的图片(头像,相册等)都统一转成特定格式(一般都是jpg)。这样做的潜在弊端就是在用像ImageMagick这样的软件处理的时候会根据扩展名做隐式格式转换。
个人觉得在保存图片的时候不加扩展名处理起来更灵活一些。
注:把上面的命令行用mini_magick改写用到rails里很容易的。mini_magick本质就调用系统命令行嘛~~
具体实例:下面是一个图片上传类:
实现对图片大小的统一缩放
分享到:
相关推荐
Java图片处理解决方案:ImageMagick快速入门教程.docx
ImageMagick-6.9下载,ImageMagick可以用来读写和处理超过89种基本格式的图片文件,达到优化PHP引擎效果(文件全称:ImageMagick-6.9.11-16.tar.gz)
crymagick:ImageMagick命令行的水晶包装
非常好用,常用的ImageMagick图像处理工具
使用ImageMagick调整图像大小,翻转,镜像,旋转,变形,剪切和变换图像,调整图像颜色,应用各种特殊效果或绘制文本,线条,多边形,椭圆和贝塞尔曲线。 什么是ImageMagick? ImageMagick的功能通常从命令行使用...
FotoKilof-ImageMagick的GUI 最常用的(对我而言)ImageMagick功能的GUI,用于处理图片。屏幕截图LinuxMac OSX视窗图形转换缩放/调整大小, 作物, 图片内部或外部的文字注释(内存生成器), 图片周围的边框回转, ...
ImageMagick是功能强大的图像处理库,支持超过(不包括子格式)。 使用Magick.NET,您可以在C#/ VB.NET / .NET Core应用程序中使用ImageMagick,而不必在服务器或台式机上安装ImageMagick。 支持平台 .NET ...
ImageMagick图形处理工具 Java处理图片必须安装工具
基于ImageMagick和Magickwand的Web图像处理.pdf
imgkit imageMagick golang服务
gosexy/canvas是Go的图像处理库,它使用ImageMagick的MagickWand作为后端。 要求 需要ImageMagick的MagickWand开发文件。 # OSX $ brew install imagemagick # Arch Linux $ sudo pacman -S extra/imagemagick # ...
马吉克目录介绍RMagick是Ruby编程语言和ImageMagick图像处理库之间的接口。先决条件最新版本的RMagick需要具备这些先决条件。 操作系统Linux * BSD 苹果系统视窗其他* nix类系统Ruby2.3版或更高版本。 您可以从获得...
: sudo pkg install ImageMagick7 : brew install imagemagick Linux可能需要从源代码构建ImageMagick,有关示例,请参阅Dockerfile Windows:下载*-dll。 仅MSVC版本可用。 安装时,选中“安装C和C ++的开发...
ImageMagick-7.0.8-56-Q16-x64-dll.rar是ImageMagick7.0.8的windows 64位操作系统的安装程序,解压执行即可安装。...ImageMagick利用多个计算线程来提高性能,并且可以读取,处理或写入兆,千兆或兆像素图像大小。
PHP+ImageMagick,图片压缩代码
2. ImageMagick-6.9.9-23-Q16-x64-dll.exe 安装目录 C:\ImageMagick 3. php_imagick-3.4.3-5.6-nts-vc11-x64.zip 中 CORE_开头的文件 解压 到 C:\php 4. php_imagick-3.4.3-5.6-nts-vc11-x64.zip 中 ...
Version: ImageMagick 6.7.6-7 2012-04-20 Q16 http://www.imagemagick.org Copyright: Copyright (C) 1999-2012 ImageMagick Studio LLC Features: OpenMP Usage: convert.exe [options ...] file [ [options ......
藏匿魔法该项目旨在抽象支持针对 Nodejs 中的流进行 ImageMagick 操作的各种库,并提供一个简单的服务来管理存储多个原始图像版本的图像存储。用例开发者希望接受用户上传的图像,但以统一的方式存储它们以供后续...
ImageMagick 使用 <?php ini_set('display_errors',1); header('Content-type: image/jpeg'); $image = new Imagick('1.jpg'); $image->thumbnailImage(100,0); echo $image; ?>