php扩展-ppc_coreimgclip 核心图片剪切

2017-12-10 14:35:58 admin ...

PPC_CoreImgClip是一个php扩展,支持php5和php7,他可以获取纯色底图中的核心图,并生成自定义尺寸和边距的新图片。

一、剪切图片的效果

如下,为了便于看效果,这里选择纯绿色底图。

原图:

剪切后的效果如下:

也就是说,程序会自动选择图片中的核心图片,然后按照位置要求形成新的图片。

二、原理流程如下:

1、取图片左上角的一个像素为底图像素。

2、根据底图像素逐行扫描像素点,如果不同则返回像素位置,分别获取上下左右四个点

3、根据四个点截取图片的核心图片

4、根据用户输入的边距,位置,将核心图片进行缩放和位置摆放

5、生成新图进行输出。

三、安装步骤

说明:本扩展需要安装opencv2.4。所以第一步安装opencv,这里以centos6.8为例。

1、安装依赖

yum -y install gtk+ gtk+-devel pkgconfig libpng zlib libjpeg libtiff cmake

2、下载安装opencv2

wget https://github.com/opencv/opencv/archive/2.4.9.tar.gz

解压安装包

tar xvf 2.4.9.tar.gz

进入opencv目录

cd opencv-2.4.9/

编译安装

cmake CMakeLists.txt
make -j $(cat /proc/cpuinfo|grep processor|wc -l)make install

注意:安装opencv过程中可能会遇到很多的警告性信息,只要可以编译通过就可以了,不必在意。

3、配置opencv

cp -p /etc/profile{,.$(date +%F_%T)}
# 在/etc/profile unset i前增加PKG_CONFIG_PATH
# grep '^PKG_CONFIG_PATH' /etc/profile||sed -i '/^unset i/iexport PKG_CONFIG_PATH=/usr/lib/pkgconfig/:/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH' /etc/profile
# source /etc/profile

#[[ -f /etc/ld.so.conf.d/opencv.conf ]] && cp -p /etc/ld.so.conf.d/opencv.conf{,.$(date +%F)}
#echo "/usr/local/lib/" > /etc/ld.so.conf.d/opencv.conf
#ldconfig

4、安装pp_coreImgClip扩展

下载

 git clone https://github.com/george518/ppc_coreimgclip.git

进入php_ext

cd php_ext/

编译安装

phpize
./configure --with-php-config=/usr/bin/php-config
make
make install

拷贝到php扩展目录

cp modules/ppc_coreimgclip.so /path/to/extension/

修改php.ini 加入ppc_coreimgclip

php -m|grep ppc_coreimgclip.so||echo 'extension = ppc_coreimgclip.so' >> /etc/php.ini

重启php-fpm

service php-fpm restart

5、测试代码

<?php    
    #需要处理的图片绝对路径    
    $sourceImg = "/Users/haodaquan/Sites/Test/ppc_coreimgclip/bags.jpg";    
    #生成图片需要保存的路径和名称    
    $destImg   = "/Users/haodaquan/Sites/Test/ppc_coreimgclip/newbags.jpg";    
    #生成图片的宽度    
    $destWidth = 300;    
    #生成图片的高度    
    $destHeight = 600;    
    #边距    
    $margin = 10;    
    #图片的位置:    #1-水平垂直居中(默认)    #2-水平居中靠上    #3-水平居中靠下    
                   #4-垂直居中靠左    #5-垂直居中靠右    #6-左上角    #7-右上角    
                   #8-左下角    #9-右下角    
    $posion     = 1;        
    #颜色差值,越小越精准    
    $dValue = 10;    
    $res = ppc_coreimgclip($sourceImg,$destImg,$destWidth,$destHeight,$margin,$posion,$dValue);    
    var_dump($res);        
    # 裁剪成功 $res 为 true    # 裁剪失败 $res 为 false `

下载安装试试吧,有问题加qq群聊:547564773

相似文章