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