ホームページ バックエンド開発 PHPチュートリアル アスペクト比を維持しながら、PHP で大きな画像の画像トリミングを最適化するにはどうすればよいですか?

アスペクト比を維持しながら、PHP で大きな画像の画像トリミングを最適化するにはどうすればよいですか?

Nov 03, 2024 pm 05:25 PM

How can I optimize image cropping in PHP for large images while preserving the aspect ratio?

PHP での画像のトリミング: 大きな画像の最適化とアスペクト比の維持

提供されているコード スニペットは画像を効果的にトリミングしますが、結果が悪化する可能性があります。より大きな画像に適用した場合。この問題に対処するために、トリミング前に元の画像のサイズを変更して、一貫した最適な結果を得るという代替アプローチを検討します。

アスペクト比を維持するためのサイズ変更

Before画像をトリミングする場合、歪みを避けるためにアスペクト比を維持することが不可欠です。アスペクト比は、画像の幅と高さの比率です。小さい側が必要な切り抜き寸法に一致するように画像のサイズを変更すると、元の縦横比を維持できます。

コードの実装

画像のサイズ変更と切り抜きを実装するには、提供されたコードの次の部分を変更します。

<code class="php">$image = imagecreatefromjpeg($_GET['src']);
$filename = 'images/cropped_whatever.jpg';

$thumb_width = 200;
$thumb_height = 150;

$width = imagesx($image);
$height = imagesy($image);

$original_aspect = $width / $height;
$thumb_aspect = $thumb_width / $thumb_height;

if ( $original_aspect >= $thumb_aspect )
{
   // If image is wider than thumbnail (in aspect ratio sense)
   $new_height = $thumb_height;
   $new_width = $width / ($height / $thumb_height);
}
else
{
   // If the thumbnail is wider than the image
   $new_width = $thumb_width;
   $new_height = $height / ($width / $thumb_width);
}

$thumb = imagecreatetruecolor( $thumb_width, $thumb_height );

// Resize and crop
imagecopyresampled($thumb,
                   $image,
                   0 - ($new_width - $thumb_width) / 2, // Center the image horizontally
                   0 - ($new_height - $thumb_height) / 2, // Center the image vertically
                   0, 0,
                   $new_width, $new_height,
                   $width, $height);
imagejpeg($thumb, $filename, 80);</code>
ログイン後にコピー

説明

  1. 元のアスペクト比 (original_aspect) とターゲット アスペクト比を計算します。 (thumb_aspect) を使用して、画像の新しい寸法を決定します。
  2. アスペクト比の観点から、元の画像がサムネイルよりも広いかどうかを確認します。
  3. 元の画像の幅が広い場合は、新しい高さをサムネイルの高さと一致させ、比例して新しい幅を計算します。
  4. サムネイルの方が広い場合は、サムネイルの幅と一致するように新しい幅を設定し、新しい高さを比例して計算します。
  5. 必要なサムネイルのサイズで新しい画像 ($thumb) を作成します。
  6. imagecopyresampled() を使用して、アスペクト比を維持しながら、元の画像のサイズを変更し、新しいサムネイルに切り抜きます。
  7. 最後にでは、トリミングされたサムネイルを指定したファイルに保存します。

このアプローチに従うことで、より大きな画像を効果的にトリミングし、アスペクト比を維持して、一貫した高品質の結果を提供できます。

以上がアスペクト比を維持しながら、PHP で大きな画像の画像トリミングを最適化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

11ベストPHP URLショートナースクリプト(無料およびプレミアム) 11ベストPHP URLショートナースクリプト(無料およびプレミアム) Mar 03, 2025 am 10:49 AM

11ベストPHP URLショートナースクリプト(無料およびプレミアム)

Instagram APIの紹介 Instagram APIの紹介 Mar 02, 2025 am 09:32 AM

Instagram APIの紹介

Laravelでフラッシュセッションデータを使用します Laravelでフラッシュセッションデータを使用します Mar 12, 2025 pm 05:08 PM

Laravelでフラッシュセッションデータを使用します

LaravelのバックエンドでReactアプリを構築する:パート2、React LaravelのバックエンドでReactアプリを構築する:パート2、React Mar 04, 2025 am 09:33 AM

LaravelのバックエンドでReactアプリを構築する:パート2、React

Laravelテストでの簡略化されたHTTP応答のモッキング Laravelテストでの簡略化されたHTTP応答のモッキング Mar 12, 2025 pm 05:09 PM

Laravelテストでの簡略化されたHTTP応答のモッキング

PHPのカール:REST APIでPHPカール拡張機能を使用する方法 PHPのカール:REST APIでPHPカール拡張機能を使用する方法 Mar 14, 2025 am 11:42 AM

PHPのカール:REST APIでPHPカール拡張機能を使用する方法

Codecanyonで12の最高のPHPチャットスクリプト Codecanyonで12の最高のPHPチャットスクリプト Mar 13, 2025 pm 12:08 PM

Codecanyonで12の最高のPHPチャットスクリプト

2025 PHP状況調査の発表 2025 PHP状況調査の発表 Mar 03, 2025 pm 04:20 PM

2025 PHP状況調査の発表

See all articles