我正在尝试使用 jcrop 保存基于 x、y、w、h 的裁剪图像。 我将 x、y 轴和宽度/高度发送到我的 PHP 文件,但裁剪区域是错误的。
这是我的 php 函数
$axis_x = $_POST["x"];
$axis_y = $_POST["y"];
$width = $_POST["w"];
$height = $_POST["h"];
$path_foto = "imgs/3.jpg";
$targ_w = $width;
$targ_h = $height;
$jpeg_quality = 90;
$src = $path_foto;
$img_r = imagecreatefromjpeg($src);
$dst_r = ImageCreateTrueColor($targ_w, $targ_h);
imagecopyresampled($dst_r, $img_r, 0, 0, $axis_x, $axis_y, $width, $targ_w, $targ_h, $height);
imagejpeg($dst_r, $path_foto, $jpeg_quality);
此坐标由 jcrop 在每次重新调整图像时隐藏的输入中设置。 问题总是裁剪错误的区域。
我做错了什么?
最佳答案
(不知道结果有什么“错误”,很难帮到你。)
但是您正在/可能会遇到一些明显的问题:
调用
imagecopyresampled()
时参数的顺序错误:最后 4 个参数应为$targ_w、$targ_h、$width、$height
Ref“坐标指的是左上角。” Ref
这意味着y = 0
位于图像的顶部,而不是底部。因此,如果您的$_POST["y"]
是距离图像底部的像素数,您需要从原始图像的高度中减去该值,然后它才能按预期工作。
获取您的代码,并使用一些硬编码值:
<?php
$axis_x = 115;
$axis_y = 128;
$width = 95;
$height = 128;
$path_foto = "/Users/gb/Downloads/original.jpg";
$targ_w = $width;
$targ_h = $height;
$jpeg_quality = 90;
$src = $path_foto;
$img_r = imagecreatefromjpeg($src);
$dst_r = ImageCreateTrueColor($targ_w, $targ_h);
imagecopyresampled($dst_r, $img_r, 0, 0, $axis_x, $axis_y, $targ_w, $targ_h, $width, $height);
imagejpeg($dst_r, "/Users/gb/Downloads/cropped.jpg", $jpeg_quality);
关于PHP + JCrop - 裁剪错误区域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23921497/