GD库裁剪图像不起作用
GD Library crop image not working
我正在尝试使用以下脚本裁剪JPG文件:
if (isset($_POST['crop_attempt'])) {
echo($_POST['path']);
$source_img = imagecreatefromjpeg($_POST['path']);
$dest_img = imagecreatetruecolor($_POST['crop_w'], $_POST['crop_h']);
imagecopy(
$dest_img,
$source_img,
0,
0,
$_POST['crop_l'],
$_POST['crop_t'],
$_POST['crop_w'],
$_POST['crop_h']
);
imagejpeg($dest_img, $_POST['path']);
imagedestroy($dest_img);
imagedestroy($source_img);
}
我通过ajax发送以下Javascript对象中的$_POST变量:
var db_data = {
left : db.offset().left - img_pos.left * ratio,
top : db.offset().top - img_pos.top * ratio,
width : db.width() * ratio,
height : db.height() * ratio,
crop_attempt: true,
path : $('._jsImageToCrop').attr('src')
};
这些值都在通过,我已经从 PHP 脚本中回显了它们,我认为问题与 imagecreatefromjpeg(( 函数有关,任何对 GD 库有更多经验的人都可以提供帮助吗?
谢谢。
考虑 PHP 将从 AJAX 调用中得到什么 - 客户端元素的 src
属性,类似于 /some/subdir/on/your/site/kittens.jpg
。您将该值直接发送到 imagecreatefromjpeg()
,这将在您的服务器上查找不存在的/some/subdir/....
......因为它缺少您网站的DOCUMENT_ROOT,这将使实际路径/path/to/your/site/doc/root/some/subdir/....
。
您永远不应该在这样的文件系统操作中使用外部数据。虽然你只是简单地把它传递给imagecreatefromjpeg((,但它仍然是不安全的,因为你允许用户直接提供完整的路径,这意味着他们可以在你的服务器上加载任何图像,任何地方,他们知道路径。
相关文章:
- 使用css()设置背景图像;不起作用
- 图层删除(图像);在 Kinetic.js 中不起作用
- 为什么我的图像幻灯片不起作用
- 为什么这个jQuery图像映射在WordPress上不起作用
- 在页面中使用了两次多个图像上传,但第一个正在工作,另一个不起作用
- 用于图像上传的 ng 文件上传不起作用
- 当图像和链接是 json 对象属性的值时,它们不起作用
- JavaScript 图像加载器不起作用
- 本地存储功能中的图像不起作用
- 使用 nameProp 的 JQuery 图像滚动更新在 Firefox 和 Chrome 中不起作用
- 如果图像具有 guid 作为名称,则 jqZoom 不起作用
- jQuery图像淡入淡出不起作用
- 输入类型的图像在Internet Explorer中不起作用,但在Chrome和Firefox中起作用
- Transloadit-图像自动旋转不起作用
- 滚动过标题后显示图像-尝试不起作用
- 上传前查看图像在IE中不起作用
- 简单的 Java 脚本背景图像不起作用
- 图像预览在Safari中不起作用
- ajax加载图像第二次在弹出jquery上不起作用
- Jquery setTimeout 不起作用(图像幻灯片)