以独特的名义保存裁剪的图像?

时间:2014-03-07 11:31:12

标签: php

此脚本可帮助我裁剪和保存图像。每次我保存图像,它保存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);
?>

1 个答案:

答案 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

看看我的意思,你的代码似乎有很多混乱。