繁体   English   中英

图像裁剪系统不适用于png或gif,但适用于jpg

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM