Rumah > pembangunan bahagian belakang > tutorial php > php imagick 扩展合成图片的两张方法

php imagick 扩展合成图片的两张方法

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Lepaskan: 2016-06-23 13:43:59
asal
911 orang telah melayarinya


方法一:compositeimages

/**     *  function: 合成图片     * @param  string      $output_url 图片保存路径     * @param  string      $img_type   图片保存类型     * @param  integral    $line_num   每行显示图片数量     * @param  array       $logo_info  每张待合成图片的信息(要求所有尺寸统一)     * @param  array       $img_list  待合成的图片绝对路径     *      * @return void     */    public function generate($output_url, $img_type, $line_num, $logo_info, $img_list=array()) {        //计算图片有多少行        $lines = ceil(count($img_list)/$line_num);        $bg_width = ($logo_info['width'] + $logo_info['line_width']) * $line_num;        $bg_height = ($logo_info['height'] + $logo_info['line_height']) * $lines;        //构建画布        $canvas = new Imagick();        $canvas->newimage($bg_width, $bg_height, 'white');        $canvas->setimageformat($img_type);        $i = $j = 0;        foreach ($img_list as $item) {            $im = new Imagick($item);            $x = $logo_info['line_width']*2 + $i * $logo_info['width'];            $y = $logo_info['line_height']*2 + $j * $logo_info['height'];                        // $canvas->compositeimage($im -> getimage(), Imagick::COMPOSITE_OVER, $x, $y);            $canvas -> compositeimage($im, $im->getImageCompose(), $x, $y);            if (($i + 1) % $line_num === 0) {                $i = 0;                $j++;            } else {                $i++;            }            // unset($im);            $im -> destroy();        }        $canvas->writeimage($output_url);        //销毁对象        $canvas -> destroy();    }
Salin selepas log masuk



方法二:combineimages

/**     *  function: 合成图片     * @param  string      $output_url 图片保存路径     * @param  string      $img_type   图片保存类型     * @param  integral    $line_num   每行显示图片数量     * @param  array       $logo_info  每张待合成图片的信息(要求所有尺寸统一)     * @param  array       $img_list  待合成的图片绝对路径     *      * @return void     */    public function generate($output_url, $img_type, $line_num, $logo_info, $img_list=array()) {        //计算图片有多少行        $lines = ceil(count($img_list)/$line_num);        $bg_width = ($logo_info['width'] + $logo_info['line_width']) * $line_num;        $bg_height = ($logo_info['height'] + $logo_info['line_height']) * $lines;        //构建画布        $canvas = null;        $canvas = new Imagick();        $canvas -> newimage($bg_width, $bg_height, 'white');        $i = $j = 0;        foreach ($img_list as $item) {            $im = null;            $im = new Imagick($item);            // $canvas -> readImage($item);            $canvas -> addimage($im);            $im -> clear();            $im -> destroy();        }        // $canvas -> flattenImages();        $canvas -> combineImages( Imagick::CHANNEL_ALL );         $canvas -> writeimage($output_url);        //销毁对象        $canvas -> clear();        $canvas -> destroy();    }
Salin selepas log masuk

个人认为方法二效率更高

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan