此脚本可帮助我裁剪和保存图像。每次我保存图像,它保存crop.jpg ..我可以用不同的名称保存吗?我有一个带图像名称的输入字段..“$ _POST ['imgname']”我如何使用它有裁剪图像的图像名称?
<?php
$canvasImg = $_POST['img'];
$data = base64_decode($canvasImg);
$File = "captured.jpg";
$Handle = fopen($File, 'w');
fwrite($Handle, $data);
fclose($Handle);
$src_image = imagecreatefrompng($File);
$width = imagesx($src_image);
$height = imagesy($src_image);
$dst_x = 0;
$dst_y = 0;
$src_x = $width*0.350; // Crop Start X
$src_y = $height*0.165; // Crop Srart Y
$dst_w = $width*0.294; // Thumb width
$dst_h = $height*0.470; // Thumb height
$src_w = $dst_w; // $src_x + $dst_w
$src_h = $dst_h; // $src_y + $dst_h
$image = imagecreatetruecolor($dst_w, $dst_h);
imagealphablending($image, false);
$col=imagecolorallocatealpha($image,255,255,255,127);
imagefilledrectangle($image,0,0,$dst_w, $dst_h,$col);
imagealphablending($image,true);
imagecopyresampled($image, $src_image, $dst_x, $dst_y, $src_x, $src_y, $dst_w, $dst_h, $src_w, $src_h);
imagealphablending($image,true);
imagealphablending($image,false);
imagesavealpha($image,true);
imagepng($image, "images/crop.jpeg");
imagedestroy($image);
?>
答案 0 :(得分:0)
如果我正确理解您的问题,您只需要为imagepng()
创建一个新文件名即可使用。
这似乎是一个简单的解决方案:
$canvasImg = $_POST['img'];
$data = base64_decode($canvasImg);
$File = "captured.jpg";
...
// create a new filesname for the cropped image in $save_to
$save_to = 'images/';
$save_to .= str_replace(array('.jpg','.png'), '', $data ) // remove original extension if it existed
$save_to .= '_crop.jpg';
// use this new name to save the cropped image
imagepng($image, $save_to);
然而,您的代码似乎没有多大意义。您接受$_POST['img']
中的图片名称,然后将其保存到名为capured.jpg
的文件中,然后在.png
$src_image = imagecreatefrompng($File);
打开
我认为您必须只接受.png
个文件,在这种情况下,为什么要将其另存为.jpg
。
看看我的意思,你的代码似乎有很多混乱。