ホームページ  >  記事  >  バックエンド開発  >  元の画像を保持しながら、アップロードされた画像からサムネイルを作成するにはどうすればよいですか?

元の画像を保持しながら、アップロードされた画像からサムネイルを作成するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-11-07 10:20:02658ブラウズ

How to create thumbnails from uploaded images while preserving the original image?

アップロードした画像からオリジナルを保持したままサムネイルを作成する

画像アップロード時にサムネイルを作成する

ユーザーが画像をアップロードするとき、元の画像の横にサムネイルを作成するのが一般的です。これにより、必要に応じて表示用に高品質のバージョンを維持しながら、小さい画像の読み込みを高速化できます。

データベース構造

この場合、データベースには 2 つの列があり、画像の保存: 元の画像の user_pic とサムネイルの user_pic_small。

画像アップロード フォーム

画像アップロード フォーム imageupload.php は、ファイルのアップロードと挿入を処理します。フルサイズの画像をデータベースに保存します。

画像処理 PHP スクリプト

PHP スクリプト media.profileimage.upload.php は、画像がアップロードされたかどうかを確認し、必要に応じてサムネイルを作成します。

ImageMagick (オプション)

ImageMagick を使用すると、サムネイルをより効率的に生成できます。 Imagick を使用した例を次に示します。

/**
 * @param string $img Image path
 * @param int $width
 * @param int $height
 * @param int $quality
 * @return bool
 * @throws Exception
 */
function generateThumbnail($img, $width, $height, $quality = 90)
{
    $imagick = new Imagick(realpath($img));
    $imagick->setImageFormat('jpeg');
    $imagick->setImageCompression(Imagick::COMPRESSION_JPEG);
    $imagick->setImageCompressionQuality($quality);
    $imagick->thumbnailImage($width, $height, false, false);
    $filename_no_ext = reset(explode('.', $img));
    return file_put_contents($filename_no_ext . '_thumb' . '.jpg', $imagick);
}

関数例

別の関数例 makeThumbnails() は、PHP の画像関数を使用してサムネイルを作成します。

function makeThumbnails($updir, $img, $id)
{
    $width = 134;
    $height = 189;
    $thumb_beforeword = "thumb";
    list($original_width, $original_height) = getimagesize("$updir$id" . '_' . "$img");
    if ($original_width > $original_height) {
        $new_width = $width;
        $new_height = intval($original_height * $new_width / $original_width);
    } else {
        $new_height = $height;
        $new_width = intval($original_width * $new_height / $original_height);
    }
    $old_image = imagecreatefromjpeg("$updir$id" . '_' . "$img");
    $new_image = imagecreatetruecolor($width, $height);
    imagecopyresized($new_image, $old_image,
        intval(($width - $new_width) / 2),
        intval(($height - $new_height) / 2),
        0, 0,
        $new_width, $new_height,
        $original_width, $original_height);
    imagejpeg($new_image, "$updir$id" . '_' . "$thumb_beforeword" . "$img");
}

これらの手法を実装することで、元の画像と一緒にサムネイルを作成して保存し、Web サイトのパフォーマンスを最適化し、ユーザー エクスペリエンスを向上させることができます。

以上が元の画像を保持しながら、アップロードされた画像からサムネイルを作成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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