zoukankan      html  css  js  c++  java
  • PHP使用imagemagick扩展处理图片

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

    所有可用的接口函数地址: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();
  • 相关阅读:
    dubbo
    maven
    vue
    SSM框架整合
    MyBatis数据表注解开发
    MyBatis多表操作xml方式
    MyBatis映射配置文件
    Mybatis核心配置文件,传统开发和代理开发(主流)
    SpringMVC高级
    SpringMVC基础
  • 原文地址:https://www.cnblogs.com/zhuyanwei/p/4563676.html
Copyright © 2011-2022 走看看