9

関数imagecopyresampledは、縦横比を維持しながらサムネイルを生成したり、画像のサイズを変更したりするのに役立ちます。

$fn = $_FILES['data']['tmp_name'];
$size = getimagesize($fn);
$width = $size[0];
$height = $size[1];
$ratio = $width / $height;
if ($ratio > 1 && $size[0] > 500) { $width = 500; $height = 500 / $ratio; }
else { if ($ratio <= 1 && $size[1] > 500) { $width = 500 * $ratio; $height = 500; }}
$src = imagecreatefromstring(file_get_contents($fn));
$dst = imagecreatetruecolor($width, $height);
imagecopyresampled($dst, $src, 0, 0, 0, 0, $width, $height, $size[0], $size[1]);
imagedestroy($src);
imagejpeg($dst, 'test.jpg');
imagedestroy($dst);

PHP で使用されるサイズ変更アルゴリズムを選択するにはどうすればよいですか?
注:この質問に記載されているように、設定imagesetinterpolation($dst, IMG_BILINEAR_FIXED);などは機能していないようです。


私が(別の言語で)行ったテストによると、「バイリニアリサイズ」はバイキュービックよりも良い結果をもたらす場合があり、逆の場合もあります(ダウンサイジングかアップサイジングかによって異なります)。


(ソース: dpchallenge.com )

4

4 に答える 4

0

なぜ図書館を利用しないのですか?PHPライブラリを使えばもっと楽になると思います。これを試してみてください。それがあなたを助けることを願っています。

于 2017-01-27T07:46:50.910 に答える