0

画像をさまざまなサイズにリサンプリングできるコードをいくつか実装しましたが、現時点では JPEG でのみ機能するようです。imagepng($image_p, null, 100);これはまだ失敗しているように見えますが、型のコードを追加する必要があると思います。ヘッダーに関しては、これら 3 つのファイル タイプを許可する方法がよくわかりません。

<?php
// The file
$filename = 'Channel-Art-Spec.png';

// Set a maximum height and width
$width = 300;
$height = 300;

// Content type
header('Content-Type: image/jpeg');

// Get new dimensions
list($width_orig, $height_orig) = getimagesize($filename);

$ratio_orig = $width_orig/$height_orig;

if ($width/$height > $ratio_orig) {
   $width = $height*$ratio_orig;
} else {
   $height = $width/$ratio_orig;
}

// Resample
$image_p = imagecreatetruecolor($width, $height);
$image = imagecreatefromjpeg($filename);
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width_orig,         $height_orig);

// Output
imagejpeg($image_p, null, 100);
?>
4

2 に答える 2

0

読んimagecreatefromjpeg()でいるファイルの種類に適切な関数を使用する必要はありません。

getimagesize()タイプをチェックしIMAGETYPE_XXXimageinfo配列で指定します (ドキュメントを参照してください)。

少し効率の悪い を使用することもできますimagecreatefromstring(file_get_contents($filename))

于 2013-03-16T19:36:16.130 に答える
0

コードが JPEG 画像に対してのみ機能する理由は、コード内の次の行です。

$image = imagecreatefromjpeg($filename);

PNG 画像の場合は、imagecreatefrompng.

于 2013-03-16T19:38:21.050 に答える