这方面的文档比较少,记录一下自己实际用到的一些:

所有可用的接口函数地址:http://cn.php.net/imagick

复制一个图片:
$src3 = new Imagick("/home/jianche51/src.jpg");
$src3->writeImage("/home/jianche51/test.jpg");
$src3->clear();
$src3->destroy();

缩放图片:
$src4 = new Imagick("/home/jianche51/src.jpg");
$src4->resizeImage(287,189,Imagick::FILTER_HAMMING,1.0);/* 把图片缩放为287*189大小 */
$src4->writeImage("/home/jianche51/test.jpg");
$src4->clear();
$src4->destroy();

网络抓图,从网上下载一个图片(其实就是将网络图片复制到本地,):
$src3 = new Imagick("http://pic6.58cdn.com.cn/p1/big/n_t0d6135438a5448017925a_b2ab66059eaeefce.jpg");
$src3->writeImage("/home/jianche51/new/car.jpg");
$src3->clear();
$src3->destroy();

给图片加水印:
$waterPic = new Imagick("/home/jianche51/new/logo.jpg");/* 要加的水印 /
$src1->setImageVirtualPixelMethod(Imagick::VIRTUALPIXELMETHOD_TRANSPARENT);
$src1->setImageArtifact('compose:args', "1,0,-0.5,0.5");
$src1->compositeImage($waterPic, Imagick::COMPOSITE_OVER, 450, 350);/
在原图的450*350位置打上水印图片 */
$src1->writeImage("/home/jianche51/test.jpg");

$waterPic->clear();
$waterPic->destroy();
$src1->clear();
$src1->destroy();

获取图片宽和高:
$src1 = new Imagick("/home/jianche51/src.jpg");
$src1_width = $src1->getImageWidth();
$src1_height = $src1->getImageHeight();

imagemagick不但可以处理图片,还可以处理pdf文件,应该是把pdf每一页都当作一个图片看待了,我们有个需求是在pdf加上我们的logo,代码如下:
$waterPic = new Imagick('logo.png'); /* 读取logo图片,以下设置了放到pdf上的logo图片大小 */
$waterPicWidth = $waterPic->getImageWidth();
$waterPicHeight = $waterPic->getImageHeight();
$waterPic->resizeImage($waterPicWidth/2,$waterPicHeight/2,Imagick::FILTER_HAMMING,1.0);

            $src1 = new Imagick('1.pdf');
            $src1Width = $src1->getImageWidth();
            $src1Height = $src1->getImageHeight();

            $src1->resetIterator();/* imagick加载完pdf文件后,迭代器指向了最后一页;这个函数是重置了迭代器,指向第一页 */

            $src1->setImageVirtualPixelMethod(Imagick::VIRTUALPIXELMETHOD_TRANSPARENT);
            $src1->setImageArtifact('compose:args', "1,0,-0.5,0.5");

            $src1->compositeImage($waterPic, Imagick::COMPOSITE_OVER, $src1Width/8, $src1Height/6); /* 设置logo的位置 */

            //$combined = $src1->appendImages(true); /* 这个函数是将所有的pdf页合并为一页 */
            $src1->writeImages('1.pdf',true);/* 这个函数第二个参数为true的时候是将所有图片输出为一个文件;为false的时候会生成多个独立的文件 */

            $src1->clear();
            $src1->destroy();

            $waterPic->clear();
            $waterPic->destroy();
posted on 2015-06-09 15:29  饭前码字  阅读(1652)  评论(0编辑  收藏  举报