Home  >  Article  >  Backend Development  >  How to create thumbnails from uploaded images while preserving the original image?

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

Susan Sarandon
Susan SarandonOriginal
2024-11-07 10:20:02583browse

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

Creating a Thumbnail from an Uploaded Image While Preserving the Original

Creating Thumbnails on Image Upload

When users upload images, it's common practice to create thumbnails alongside the original image. This allows for faster loading of smaller images while maintaining a higher-quality version for display when necessary.

Database Structure

In this case, the database has two columns to store images: user_pic for the original image and user_pic_small for the thumbnail.

Image Upload Form

The image upload form, imageupload.php, handles the file upload and inserts the full-size image into the database.

Image Processing PHP Script

The PHP script, media.profileimage.upload.php, checks if an image was uploaded and creates a thumbnail if needed.

ImageMagick (Optional)

ImageMagick can be used to generate thumbnails more efficiently. Here's an example using 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);
}

Example Function

Another example function, makeThumbnails() uses PHP's image functions to create thumbnails:

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");
}

By implementing these techniques, you can create and store thumbnails alongside the original images, optimizing website performance and enhancing user experience.

The above is the detailed content of How to create thumbnails from uploaded images while preserving the original image?. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn