php - 如何使用 jcrop 裁剪正确的图像
问题描述
我正在尝试实现 jcrop 功能,但裁剪图像的输出是错误的。下面是我的部分代码。第一部分是从我的代码底部的 POST 表单调用的 PHP 脚本。PHP 脚本之后是 JQuery 脚本。在底部有我用来提交我要裁剪的图像坐标的表格。
'''
***PHP script**
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST')
{
$targ_w = 800;
$targ_h = 800;
$jpeg_quality = 100;
$src='images/boolprv.jpg';
$img_r = imagecreatefromjpeg($src);
$dst_r = ImageCreateTrueColor( $targ_w, $targ_h );
imagecopyresampled($dst_r,$img_r,0,0,$_POST['x'],$_POST['y'],
$targ_w,$targ_h,$_POST['w'],$_POST['h']);
header('Content-type: image/jpeg');
imagejpeg($dst_r,null,$jpeg_quality);
imagedestroy($dst_r);
exit;
}
?>
***** jquery script ***
<script language="Javascript">
$(function(){
$('#cropbox').Jcrop({
aspectRatio: 1,
onSelect: updateCoords
});
});
function updateCoords(c)
{
$('#x').val(c.x);
$('#y').val(c.y);
$('#w').val(c.w);
$('#h').val(c.h);
};
function checkCoords()
{
if (parseInt($('#w').val())) return true;
alert('Please select a crop region then press submit.');
return false;
};
</script>
*****HTML form****
<img src= "images/boolprv.jpg" width="800" id="cropbox" />
<form action="cropfirst.php" method="post" onsubmit="return checkCoords();">
<input type="hidden" id="x" name="x" />
<input type="hidden" id="y" name="y" />
<input type="hidden" id="w" name="w" />
<input type="hidden" id="h" name="h" />
Nome: <input type="text" name="nome"><br>
Cognome: <input type="text" name="cognome"><br>
<input type="submit" value="Crop Image" />
</form>
'''
结果是错误的裁剪区域,因为在1中您可以看到我想要裁剪的区域,但在2中是我从 Imagejpeg() 函数获得的结果。
有人可以帮我吗?谢谢
解决方案
问题是我将 HTML 表单中的宽度设置为“800”,这使得 jCrop 无法正常工作,因为 PHP 脚本中没有考虑到这个宽度设置。
改变后
<img src= "images/boolprv.jpg" width="800" id="cropbox" />
至
<img src= "images/boolprv.jpg" id="cropbox" />
一切正常,但现在每个图像显然都有自己的大小,结果并不好看。width="70%"
如果我添加到我的 HTML 表单中,如何改进我的 PHP 脚本?如果宽度是固定的,它应该不会那么棘手,但我希望图像能够响应我正在使用的设备(PC、平板电脑或智能手机)。谢谢。
推荐阅读
- kendo-ui - 剑道网格上的拖放按钮
- python - 如何使用 python 创建一个简单的访客标签
- html - 如何使用python格式化html表格
- sql - 交叉连接查询本身以匹配以查看它是否不是最后一条记录
- vue.js - 如何在 Vue.js 中获取事件信息?
- terraform - Terraform 创建用户帐户并通过电子邮件发送密码
- javascript - 移动网站:有没有办法限制文件上传应用程序的选择?
- powerbi - 计算 Power BI 模型中没有明确关系的 2 个表之间的月值
- service-worker - 如何在页面刷新后更新服务工作者时提供页面重新加载?
- css - VUEJS:是否可以在显示之前处理/修改通过 v-for 检索到的数据?