PHP は白いエッジを持つサムネイルを生成します (一致するサムネイル スキーム)_PHP チュートリアル

WBOY
リリース: 2016-07-13 17:18:23
オリジナル
962 人が閲覧しました

画像をアップロードした後にサムネイルを生成するというのは、一般的にWebサイトではよくある機能のはずですが、例えば最近作ったWebサイトでは、サムネイルのサイズを同じにするのが一般的です。全て160×120です。ただし、アップロードした画像の比率がサムネイルと一致していない場合、直接拡大縮小すると画像が変形してしまい、操作性は確実に悪くなります。そこで筆者は、サイズを縮小した後に白いエッジを追加するという妥協策を考えました。

ソース画像、サイズは600×366:

PHP は白いエッジを持つサムネイルを生成します (一致するサムネイル スキーム)_PHP チュートリアル

最終レンダリング:

PHP は白いエッジを持つサムネイルを生成します (一致するサムネイル スキーム)_PHP チュートリアル

コードは比較的長いので、アイデアについて簡単に説明しましょう:

まずソース画像に比例してサムネイルを生成します。幅は 160 を超えず、高さは 120 を超えてはなりません。たとえば、上の画像は最初に 160×98 のサムネイルを生成します。
新しい160×120の白い背景画像を作成し、前の手順で生成したサムネイルをこの画像の中央に配置すればOKです。
最終的なコードは次のとおりです:

コードをコピーします コードは次のとおりです:

//ソース画像のパス。ローカルファイルまたはリモート画像にすることができます
$src_path = '1.jpg';
//最終的に保存された画像の幅
$width = 160;
//最終的に保存された画像の高さ
$height = 120;

//ソース画像オブジェクト
$src_image = imagecreatefromstring(file_get_contents($src_path));
$src_width = imagex($src_image);
$src_height = imagey($src_image);

//等しい比率のサムネイルを生成します
$tmp_image_width = 0;
$tmp_image_height = 0;
if ($src_width / $src_height >= $width / $height) {
$tmp_image_width = $width;
$tmp_image_height =round ($tmp_image_width * $src_height / $src_width);
} else {
$tmp_image_height = $height;
$tmp_image_width =round($tmp_image_height * $src_width / $src_height);
}

$tmpImage = imagecreatetruecolor($tmp_image_width, $tmp_image_height);
imagecopyresampled($tmpImage, $src_image, 0, 0, 0, 0, $tmp_image_width, $tmp_image_height, $src_width, $src_height);

//白いエッジを追加します
$final_image = imagecreatetruecolor($width, $height);
$color = imagecolorallocate($final_image, 255, 255, 255);
imagefill($final_image, 0, 0, $color);

$x =round(($width - $tmp_image_width) / 2);
$y =round(($height - $tmp_image_height) / 2);

imagecopy($final_image, $tmpImage, $x, $y, 0, 0, $tmp_image_width, $tmp_image_height);

//出力画像
header('Content-Type: image/jpeg');
imagejpeg($final_image);

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/621663.html技術記事 Web サイトに画像をアップロードした後にサムネイルを生成するのは、一般的には非常に一般的な機能のはずです。たとえば、最近作成した Web サイトでは、サムネイルが同じサイズになります。
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!