0

これが私の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 にしたいのです。

4

1 に答える 1

0

まず、ここでミスをしました。

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);
} 
于 2013-02-12T06:28:32.803 に答える