宝哥软件园

php js实现裁剪任意形状图片

编辑:宝哥软件园 来源:互联网 时间:2021-08-29

最近做到相关的项目,由于项目使用html2canvas,但是不支持钢性铸铁掩码属性,故,利用服务器端编程语言(专业超文本预处理器的缩写)后台来裁剪。

准备两张图片,一张是镂空巴布亚新几内亚图案,一张是任意纯色图片。

便能够在纯色图片上裁剪出镂空的图案为巴布亚新几内亚文件。

见下图。

首先两张巴布亚新几内亚图片:

生成图片

射流研究…片段:

html 2画布($(。head 1 pic '),{ onrendered : function(canvas){ URL=canvas。todaytaul(' image/png ',1.0);来源pic='资产/图像/演示。png ';mask pic='资产/图像/金茂。png ';cropPicName=' cropDog1//ajax php截图$.ajax({ type: 'post ',url: ' getpicture ',data : { ' source pic ' : source pic,' maskPic': maskPic,' cropPicName': cropPicName },success 3360 function(data){ $(。第2页,BG '[0].setAttribute('src ','资产/图像/裁剪/cropdog 1。png ');},错误:函数(数据){ console.log(数据)} });} });服务器端编程语言(专业超文本预处理器的缩写)的片段:

公共函数actionGetpicture(){ $ request=yii : $ app-request;$ source pic=$ request-post(' source pic ');$ MaskPic=$ request-post(' MaskPic ');$ cropPicName=$ request-post(' cropPicName ');//$ SourcePic=' http://bings。本地的。com/bi _ ngs 2 _ 2/资产/影像/印片1/第2页BG 4。png ';//$ MaskPic=' http://bings。本地的。com/bi _ ngs 2 _ 2/资产/影像/金茂。png ';$ source=imagecreatefrompng($ source pic);$ mask=imagecreatefrompng($ MaskPic);//将蒙版应用到source //imagealphamask($source,$ mask);$this-imagealphamask ($source,$ mask);//输出头(“内容类型:图像/png”);//生成截取后的图片并保存在本地imagepng($source,“资产/图像/裁剪”.$ cropPicName . png ');//销毁图片内存图像破坏($ source);}公共函数imagealphamask($picture,$mask ) { //获取大小并设置新图片$ XSize=imagesx($ picture);$ ySize=imagesy($ picture);$ new picture=imagecreatetrue color($ xSize,$ ySize);imagesavealpha($newPicture,true);imagefill($newPicture,0,0,imagecoloallocatelpha($ new picture,100,100,0,127));//根据需要调整蒙版大小//if($xSize!=imagesx($mask ) || $ySize!=imagesy($ mask)){//$ tempPic=imagecreatetrue color($ xSize,$ ySize);//imagecopyresampled($tempPic,$mask,0,0,0,$xSize,$ySize,imagesx($mask),imagesy($ mask));//图像破坏($ mask);//$ mask=$ TempPic;//} //对($x=0)执行基于像素的希腊字母的第一个字母贴图应用;$ x $ XSize $ x){ for($ y=0;$ y $ ySize $ y){ $ alpha=imagecolorsforindex($ mask,imagecolorat($mask,$x,$ y));//小现代的提取阿尔法,如果用黑色(透明)和白色//掩码文件取而代之将下面一行改回朱尔斯的原价:/$ alpha=127-floor($ alpha[' black ']/2);//或白色(透明)和黑色的遮罩文件:/$ alpha=floor($ alpha[' black ']/2);$ alpha=$ alpha[' alpha '];$ color=imagecolorsforindex($ picture,imagecolorat($picture,$x,$ y));//通过比较两个值来保留alpha if($ color[' alpha ']$ alpha)$ alpha=$ color[' alpha '];//全透明像素的杀数据if($ alpha==127){ $ color[' red ']=0;$ color[' blue ']=0;$ color[' green ']=0;} imagesetpixel($newPicture,$x,$y,imagecoloradacalatelpha($ new picture,$color[ 'red' ],$color[ 'green' ],$color[ 'blue' ],$ alpha));} } //复制回原始图片图像破坏(图片);$ picture=$ newPicture}以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

更多资讯
游戏推荐
更多+