2014-03-07 29 views
0

这个脚本可以帮助我裁剪和保存图像。每次我保存一个图像它保存有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); 
?> 
+3

'imagepng($ image,“images/crop.jpeg”);'改变这个。提示:不要总是依赖复制粘贴。 –

+0

您可以将其重命名为时间戳并保存。 – krishna

+0

嗨..改成什么? n sry for copy-paste :) – gumireddy

回答

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); 

你的代码似乎但是并没有取得多大SENCE。您在$_POST['img']接受的图像名称,然后将其保存到一个名为capured.jpg文件,然后打开它作为一个.png$src_image = imagecreatefrompng($File);

我想你必须只接受.png文件,在这种情况下,为什么它保存为.jpg

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

+0

嗨兄弟工作的一个WordPress站点..我想拍一张照片的内容..我用html2canvas得到它完成..即时通过后名称有图像名称$ _POST ['imgname'] ...所以裁剪后的图像可以每次保存为一个独特的名称(postname)..“captured.jpg”拍摄整个屏幕的截图..然后将拍摄图像的一部分裁剪为crop.jpg。 。一切工作正常与代码..但裁剪图像取代crop.jpg每次..我如何保存它与帖子名称? – gumireddy

+0

就像我发布的示例! – RiggsFolly

+0

对不起兄弟..它不工作对我..即时通讯太糟糕了在PHP :(即时通讯试图了解并修复它.. – gumireddy