2011-12-21 74 views
0

哎呀我从哪里开始:)嗯,我目前安装的jQuery选择图像区域,我也得到X/Y位置,以便作品。如何使用X Y裁剪图像,缺少的东西

现在即时尝试裁剪一个图像,它可以完美的工作,当我选择一个小于103px的区域似乎但如果我选择一个更大的区域,它不会裁剪它应该如何做,只有部分区域得到保存。

为什么真的和我失去了什么?我的输出必须是103x103像素

问候 约翰

$image_crop_x1 = $_POST['x1']; 
$image_crop_x2 = $_POST['x2']; 
$image_crop_y1 = $_POST['y1']; 
$image_crop_y2 = $_POST['y2']; 

$dest = imagecreatetruecolor(103, 103); 
$src = imagecreatefromjpeg('../forum/temp/temp_avatars/1.jpg'); 

imagecopy($dest, $src, 0, 0, $image_crop_x1, $image_crop_y1, 418, 700); 
imagejpeg($dest, "../forum/temp/temp_avatars/2.jpg", 100); 
+0

你能否提供var_dump($ _POST)的值来查看实际上这些值是什么? – macjohn 2011-12-21 14:37:02

+0

阵列(6){[ “X1”] =>串(2) “18”[ “Y1”] =>串(2) “82”[ “×2”] =>串(3) “392”[” y2“] => string(3)”456“[”image_path“] => string(32)”../forum/temp/temp_avatars/1.jpg“[”save_avatar“] => string(12)”Spara阿凡达”} – John 2011-12-21 14:48:49

+0

不应该'src_w'参数来计算'$ image_crop_x2 - $ image_crop_x1'?同样的'src_h' arg – goat 2011-12-21 14:54:17

回答

1

此代码的工作...

$image_crop_x1 = intval($_POST['x1']); 
$image_crop_x2 = intval($_POST['x2']); 
$image_crop_y1 = intval($_POST['y1']); 
$image_crop_y2 = intval($_POST['y2']); 

$dest = imagecreatetruecolor(103, 103); 
$src = imagecreatefromjpeg('../forum/temp/temp_avatars/1.jpg'); 

imagecopy($dest, $src, 0, 0, $image_crop_x1, $image_crop_y1, $image_crop_x2, $image_crop_y2); 
imagejpeg($dest, "../forum/temp/temp_avatars/2.jpg", 100); 
imagedestroy($src); 
imagedestroy($dest); 
+0

与此相同的问题。作物作品正常工作,只要我只选择一个小于103px的区域,高于它会变得混乱:( 也似乎搞砸了,如果选择图像上的一个非常小的区域... – John 2011-12-21 16:06:33

2

X2,Y2必须是高点,当X1,Y1必须作物的低点。看看这个例子:

Example

,其中X = Y = 103有没有办法X1,Y1,X2或Y2可以大于103,您需要防止这种情况。