======一、ImageMagick、IMagick简介======
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相同的功能。
======二、安装======
》 安装make
$ yum install make
》 安装gcc
$ yum install gcc
1、安装ImageMagick
$ cd /opt/
$ tar zvxf ImageMagick-6.7.5-6.tar.gz
$ cd ImageMagick-6.7.5-6
$ ./configure
$ make
$ make install
2、命令行缩放一张图片
$ /usr/local/bin ./convert -resize 200x200 -colors 100 src.jpg tar.jpg
PS:报错了。错误信息:no decode delegate for this image format.
查看convert支持处理的格式
$ convert -list format
》服务器如果没有安装Jpeg v6b、libPng、FreeType要在安装imagemagick之前先装好,否则imagemagick没法读取jpeg和png图片,字体文件也读不了。而安装libpng需要zlib的支持。所以先由安装zlib为开始。(抱歉,只能重新执行4-5-6-1了。)
》libpng 使用 zlib 程序库作为压缩引擎,zlib 也是著名的 gzip (GNU zip) 所采用的压缩引擎
3、安装IMagick
$ tar zvxf imagick-3.0.1.tgz
$ cd imagick-3.0.1
$ phpize
$ ./configure
$ make
$ make install
PS: make的时候报错咯...下了最新包的同学,请降低imagick安装版本。如:IMagick-2.3.0.tgz。
imagick-3.0.1/imagick_class.c:9673: error: expected ';' before 'severity'
imagick-3.0.1/imagick_class.c:9673: error: 'php_imagick_object' has no member named 'magick_wand'
imagick-3.0.1/imagick_class.c:9673: error: 'severity' undeclared (first use in this function)
imagick-3.0.1/imagick_class.c:9673: warning: assignment makes pointer from integer without a cast
imagick-3.0.1/imagick_class.c:9673: warning: cast to pointer from integer of different size
imagick-3.0.1/imagick_class.c:9673: warning: cast to pointer from integer of different size
imagick-3.0.1/imagick_class.c:9673: error: 'php_imagick_object' has no member named 'magick_wand'
make: *** [imagick_class.lo] Error 1
4、安装zlib
$ tar -xzvf zlib-1.2.5.tar.gz
$ cd zlib-1.2.5
$ ./configure
$ make
$ make install
5、编译安装libpng
$ tar -xzvf libpng-1.2.12.tar.gz
$ cd libpng-1.2.12
$ cp scripts/makefile.std makefile
$ make
$ make install
6、编译安装 jpeg-6b
$ ./configure --enable-shared --enable-static
$ make
$ make install
Ps:又出错了!!!cannot create regular file `/usr/local/man/man1/cjpeg.1': No such file or directory,按照提示做吧!
7、别忘记在php.ini把扩展配置上去
======三、ImageMagick使用======
这里只是介绍图片压缩这一点领域,其余的图片处理请research其它资源。
》 压缩jpg图像体积
$ cd /usr/local/ImageMagick/bin/
$ ./convert -quality 20 /tmp/test/jpg_src.jpg /tmp/test/jpg20.jpg
压缩前:(约230k)
压所后:(约70k)
在图片质量尚可的情况下,体积减小了将近3/4!这对于大访问量和高并发情况下图片加载速度以及服务器流量的意义非常重大。
》 压缩png图片体积
$ ./convert -map netscape: +profile "*" /tmp/test/png_src.png /tmp/test/c_png_src.png
压缩前:(约89k)
压所后:(约47k)
在图片质量尚可的情况下,体积减小了将近1/2!但是对png图片透明背景的处理不尽如人意。
======三、php_IMagick使用======
》压缩jpg图片
/******************code******************/
$imgObject = new Imagick("src.jpg");
// 去除图片信息
$imgObject->stripImage();
// 设置压缩比率
$imgObject->setImageCompressionQuality($q);
$imgObject->writeImage("compress.png");
$imgObject->destroy();
/******************code******************/
》压缩png图片
/******************code******************/
$imgObject = new Imagick("src.png");
// 去除图片信息
$imgObject->stripImage();
$flag = $imgObject->getImageAlphaChannel();
// 如果png背景非透明,则进行压缩
if(imagick::ALPHACHANNEL_UNDEFINED == $flag||imagick::ALPHACHANNEL_DEACTIVATE == $flag) {
$imgObject->setImageType(imagick::IMGTYPE_PALETTE);
$imgObject->writeImage("compress.png);
$imgObject->destroy();
/******************code******************/
======五、资源-帮助文档======
》ImageMagick官网
http://www.ImageMagick.org/script/index.php
》英文文档:
http://www.php.net/manual/en/class.IMagick.php
》中文文档:
http://cn.php.net/manual/zh/class.IMagick.php
=======五、资源-lib src======
》ImageMagick(ImageMagick-6.7.5-6.tar.gz) download
ftp://ftp.kddlabs.co.jp/graphics/ImageMagick/ImageMagick-6.7.5-6.tar.gz
可以在 ftp://ftp.kddlabs.co.jp/graphics/ImageMagick找到合适的版本。
》IMagick lib download
http://pecl.php.net/get/IMagick-2.3.0.tgz
》jpeg lib download
http://www.ijg.org/files/jpegsrc.v6b.tar.gz
》png lib
http://sourceforge.net/projects/libpng/files/libpng12/1.2.47/libpng-1.2.47.tar.gz/download
》zlib download
http://sourceforge.net/projects/libpng/files/zlib/1.2.3/zlib-1.2.3.tar.gz/download
为了提高页面的加载速度,以及减少流量,要针对网站的图片进行瘦身,研究了很多的解决方案,最后确定了使用ImageMagick,了解了这个软件之后,真是如获至宝,简直太好用,效果太明显了。
ImageMa...
来自:
andy1219111的专栏
ImageMagick的功能简介:原文地址 ,由BBDD完成。1、批量旋转、分割,并顺序编号,一步到位2、自动批量切除白边(auto-crop)3、自动倾斜校正(deskew)4、批量加标注5、批量去...
来自:
知末随未的博客
本人管的一台阿里云服务器由于空间的带宽才只有1MB,图片一多,网站打开就慢,真是蛋疼啊,在不增加带宽的情况只有通过系统让图片更小,这样可以加快速度了,真是人穷就没办法啊。而且压缩图片还可以节省服务器空...
来自:
songwenbinasdf的专栏
在我们印象中php一些简单的图片处理可以用gd库来完成,但是真正快速高效的、灵活复杂的图片处理,gd库是不满足的,所以我们一般使用linux上的 ImageMagick 或者 php的imag...
来自:
panjiapengfly的博客
前段时间公司项目开发,需求是给淘宝图片打水印。技术总监介绍了一个关于打水印的PHP扩展,Imagick,刚开始觉得这个扩展没有什么特别之处,后来用着发现其强大。光是函数都有三四百个,官方的说明文档都是...
来自:
Run_Function_Online的博客
很多人懶的換 ImageMagick 的原因大多是不知道好在哪裡,或是虛擬主機商並不支援。我現在把 ImageMagick 跟 GD Library 轉出來的圖貼在這邊供大家評估看看。
原圖...
来自:
程序员小鱼 - 每多学一点知识,就能少写几行代码
Imagick功能相当的多,只是还不稳定,我下面的程序能够运行,但是会出现内存错误,但我们要的图片还是能够得到。
弄这个的原因是,一个客户要求在一个appcan的应用里面实现一个页面的背景图的...
来自:
2019想做自己的游戏的人加群95303036
还记得上次的代码:上次博客链接
这里的代码存在的最大问题是:使用的是GD2的库,这个库不知道为什么我做了unset之类的操作(几乎所有变量都在每次循环后unset,就差每句都加)之后内存还是会溢满(...
来自:
CODE and POEM
一般用php处理图片都是使用GD库或者GD2的函数库,一般编译php环境都会搭上GD库,大多数开源程序也是用GD来处理图片的,但是它只能现实诸如调整大小、增加水印等基础功能,要想用GD来做复杂图形是非...
来自:
蓝天的博客
php处理文件的上传是很简便的,但是如果要对上传的图片进行缩放处理的话,虽说能用GD来做,但是要进行比较繁琐的处理。ImageMagick是一个图像处理包,一般的Linux/>Linux软件包中都会有...
来自:
琉璃仙境
ImageMagick主页:http://www.imagemagick.org/script/index.php 这两篇文章介绍了ImageMagick的基本使用http://www.ibm.co...
来自:
星星的技术专栏
在项目中,经常会遇到在前端页面展示用户自己上传的图片。当部分图片尺寸过大,页面图片过多的情况下(如论坛里需要显示用户头像),会引起页面加载缓慢的问题。由于用户图片已存储导数据库,无法改变库里的...
来自:
kirsten_z的博客
要将ImageMagick安装目录下的modules/cores里面的125个dll拷贝到你的php安装根目录下。
增加path路径的方法 不起作用。
我的IIS使用的是fastC...
来自:
liyadongcn的博客
1、先安装webpyum install libwebp2、编译安装ImageMagick之前有过yum安装的先卸载yum remove ImageMagick我使用的是老版本ImageMagick-...
来自:
djl的专栏,blog.djl.cx好记
需求:为用户生成特定的二维码 ,拉取用户的微信头像 和特定的背景图合成一张用户专属海报
方法:采用PHP的Imagick扩展功能对图片进行合成处理。对微信头像进行圆角处理,然后压缩图片的质量
1. ...
来自:
hxmandzzx的博客
昨天收到阿里云的漏洞报告邮件,邮件内容
ImageMagick被爆高危漏洞(CVE-2016-3714),此漏洞允许攻击者通过上传恶意构造的图像文件,在目标服务器执行任意代码。黑客可利用此类漏洞盗取权...
来自:
php小松
imagick是一个功能强大的图像处理库。
说是翻译 其实就是简要介绍imagick 的主要功能的或者说是我觉得比较实用的功能函数的介绍 以及使用的例子。
因为本人的英语水平有限,所以采用比较通俗或者...
来自:
满天星
原文:http://www.cnblogs.com/xiangxiaodong/archive/2013/12/23/3487008.html
imagick是一个PHP的扩展,用ImageMagi...
来自:
Leo的博客
checking ImageMagick MagickWand API configuration program... checking Testing /usr/local...
来自:
dolores_peng的博客
图片处理中,经常会需要对一个图片打水印,这里记录下打文字水印。水印的话,通常不希望喧宾夺主,不可以太影响到原图的效果(完全不影响这个也不可能啦)。水印文字白色,且有一个透明度,这样应该会是蛮好一点儿的...
来自:
shuidongfengliang的专栏
1.写在前面1-1.ImageMagick介绍ImageMagick是一套功能强大、稳定而且开源的工具集和开发包,可以用来读、写和处理超过89种基本格式的图片文件,包括流行的TIFF、JPEG、GIF...
来自:
Jsonkim的博客
最近的PHP项目中,需要用到切图和缩图的效果,在linux测试服务器上很轻松的就安装好php imagick扩展。但是在本地windows开发环境,安装过程遇到好多问题,在此与大家分享。
1. ...
来自:
人工智能安全机器人手术机器人
http://php.net/manual/en/book.imagick.php 类参考文档
PHP中Imagick类的使用
PHP中Imagick类,提供了比GD库函数更为方便和强大的图片...
来自:
pkufergus的专栏
一、安装环境及版本库 OS: MAC OS X 10.8.3 PHP:5.6.39 ImageMagick:6.9.9 Imagick:3.0.1 二、安装ImageMagi...
来自:
一路向前ylc
PHP建图通常都用GD库,因为是内置的不需要在服务器上额外安装插件,所以用起来比较省心,但是如果你的程序主要的功能就是处理图像,那麼就不建议用GD了,因为GD不但低效能而且能力也比较弱,佔用的系统资源...
来自:
黑夜人的博客
最近应公司项目需要将一张RGB通道的图片转为CMYK通道的图片,需要使用imagick。结果进入了这巨坑!!!!!!
百度了一波,网上很多教程,可都没有一个有效,开始了慢慢探索的道路。我这边试过wi...
来自:
ls498297458的博客
还记得去年在北京安博会上,看到一些厂家的展示台上,各种船舶、公路、车辆的高清视频直播,好奇这些数据是怎么接到现场的,现场成百上千家展台,不可能有那么大的带宽供应,细想数据肯定不是实时的,果然,盯着看了...
来自:
Babosa的专栏
开发ArcGIS Online应用程序模板之前,需要了解怎么使用ArcGIS API for JavaScript。
在ArcGIS Online当中如何构架自己的应用程序模板,我们得先要了...
来自:
ArcGIS产品与技术专栏
下载安装JDK并配置环境变量
这里我下载安装的是jdk-7u51-windows-i586,如果你没有请到Oracle官网下载;
【我的电脑】-【高级系统设置】-【环境变量】-系统变量中的Path添加...
来自:
hankaibo
在处理数据过程中,常会遇到将一条数据拆分成多条,比如一个人的地址信息中,可能有多条地址,既有家庭地址也有工作地址,还有电话信息等等类似的情况,实际使用数据的时候又需要分开处理,这个时候就需要将这一条数...
来自:
dongcheng 的博客
对于J2EE项目导入导出Excel是最普通和实用功能,本工具类使用步骤简单,功能强大,只需要对实体类进行简单的注解就能实现导入导出功能,导入导出操作的都是实体对象.
请看一下这个类都有哪些功能:
来自:
李坤 大米时代 第五期
因为公司有个项目有webapp的需求,在前期准备的期间考虑过使用ionic,毕竟该项目web端的框架使用的是Angular,项目组的人也都比较熟悉,但是我们毕竟只是做个移动的网页,不想用ionic那么...
来自:
zhangl的博客
1、问题症状描述
最近在处理一个新需求问题,代码的大致逻辑是获取一个实体对象,调用该对象的set方法设置其中的某些字段,然后把修改后的实体作为参数供其他地方调用,根据返回值来决定是否更新这...
来自:
Mr_Alex
Java中的ThreadLocal类允许我们创建只能被同一个线程读写的变量。因此,如果一段代码含有一个ThreadLocal变量的引用,即使两个线程同时执行这段代码,它们也无法访问到对方的Thread...
来自:
u011860731的专栏
本篇文章是根据我的上篇博客,给出的改进版,由于时间有限,仅做了一个简单的优化。相关文章:将excel导入数据库2018年4月1日,新增下载地址链接:点击打开源码下载地址十分抱歉,这个链接地址没有在这篇...
来自:
Lynn_Blog
以前使用qq邮箱、163服务器发送邮件,帐号直接使用密码,现在不行了,得使用授权码,简单记录下
1、首先开通POP3/SMTP服务,qq邮箱——帐号——设置,找到POP3/SMTP点开启,输入短信会有...
来自:
爱代码也爱生活
目前在Android开发中,开源的网络请求框架有Android-async-http ,Volley,Okhttp等,这几种框架都是市面上主流的,每种都有各自的优点。今天主要来看看Okhttp。之前...
来自:
zhangxiaowei
nginx是个好东西,Nginx (engine x) 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambl...
来自:
maoyuanming0806的博客
问题场景描述整个项目通过Maven构建,大致结构如下:
核心Spring框架一个module spring-boot-base
service和dao一个module server-core
提供系统...
来自:
开发随笔
最近一直在准备面试,为了使自己的Java水平更上一个档次,拜读了李林峰老师的《Netty权威指南》,了解了Java关于IO的发展和最新的技术,真是受益匪浅,现在把我总结的关于BIO、NIO和AIO的区...
来自:
我的编程世界
如下图所示,蜂窝小区,以1为中心,顺时针编号,编号最大限定为100000。求任意两编号之间的最短距离。两个相邻小区的距离为1 示例:19到30的最短距离为5 实现如下三个接口: /**********...
来自:
NYS001的专栏
错误类型及描述:
expdp 导出表在表分析是开始出现报错。
ORA-39127: unexpected error from call to export_string :=SYS.DBMS_A...