PHP + JCrop - 裁剪错误区域

标签 php jcrop

我正在尝试使用 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 在每次重新调整图像时隐藏的输入中设置。 问题总是裁剪错误的区域。

我做错了什么?

最佳答案

(不知道结果有什么“错误”,很难帮到你。)

但是您正在/可能会遇到一些明显的问题:

  1. 调用 imagecopyresampled() 时参数的顺序错误:最后 4 个参数应为 $targ_w、$targ_h、$width、$height Ref

  2. “坐标指的是左上角。” 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);

原创.jpg: original.jpg

剪裁.jpg: cropped.jpg

关于PHP + JCrop - 裁剪错误区域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23921497/

相关文章:

jquery - 在响应式图像上使用 jcrop

php - 是否可以使用 simplexml 将注释标记插入到 xml 中?

php - 使用两列找出mysql数据库中的热门域名

php - 推荐一个好的图片上传和裁剪工具

javascript - Jcrop 大图像真实尺寸

jquery - 无法用鼠标拖动 jcrop 选区

javascript - 如何使用 javascript 或 jquery 在浏览器上获取文件创建日期

php - 识别字符串是否为驼峰式

javascript - 传递带空格的字符串变量

javascript - 将相机或图库中的图像保存在phonegap中的 Canvas 中,然后旋转并裁剪它