![](/img/trans.png)
[英]PHP imagecreatefromjpeg works, so why doesn't png/bmp/gif work?
[英]Image cropping system doesn't work with png or gif but works with jpg
这是我的PHP代码:
<?php
$dst_x = 0;
$dst_y = 0;
$src_x = $_POST['left'];
$src_y = $_POST['top'];
$dst_w = $_POST['width'];
$dst_h = $_POST['height'];
$src_w = $_POST['width'];
$src_h = $_POST['height'];
$file_name = 'test.gif';
$allowed = array('jpg','jpeg','gif','png');
$file_extension= explode('.', $file_name);
$file_extn= strtolower(end($file_extension));
$dst_image = imagecreatetruecolor($dst_w,$dst_h);
if(in_array($file_extn, $allowed) == 'jpg, jpeg'){
$src_image = imagecreatefromjpeg($file_name);
}
else if(in_array($file_extn, $allowed) == 'gif') {
$src_image = imagecreatefromgif($file_name);
}
else if(in_array($file_extn, $allowed) == 'png') {
$src_image = imagecreatefrompng($file_name);
}
imagecopyresampled($dst_image, $src_image, $dst_x, $dst_y, $src_x, $src_y, $dst_w, $dst_h, $src_w, $src_h);
imagejpeg($dst_image, "new.jpg");
?>
裁剪图像时,它适用于jpg,但不适用于png或gif。 它显示的只是一张空白图片。 我确定if语句有问题。 这里有什么问题? 如果我单独执行此操作,而没有if语句,则它没有问题,是的,我希望输出为jpeg。
首先,您在这里犯了一个错误。
else if(in_array($file_extn, $allowed) == 'png') {
$src_image = imagecreatefromgif($file_name);
}
应该 :
else if(in_array($file_extn, $allowed) == 'png') {
$src_image = imagecreatefrompng($file_name);
}
并且必须有一个单独的if语句。
if(in_array($file_extn, $allowed) == 'jpg, jpeg'){
$src_image = imagecreatefromjpeg($file_name);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.