PHP也能調整JPEG影像大小!

藏色散人
發布: 2023-04-10 16:20:01
原創
3816 人瀏覽過

在之前的文章《PHP中的===運算子為什麼比==快? 》中為大家介紹了PHP中的===運算子為什麼比==快,有興趣的朋友可以學習了解一下~

本文的主題則是教大家在PHP中調整JPEG圖像大小。

我們在網站開發過程中,有時會遇到要求實現縮放圖像的功能、例如封面圖、縮圖、資料圖等等。要依需求規定圖片的尺寸,不過大家應該也知道關於圖片大小,我們可以用HTML來修改,如下:

<img src="001.jpg"    style="max-width:90%" width="100" alt="图片尺寸">
登入後複製

當然本文的重點是用 PHP 調整圖片大小,下面我們就直接來看程式碼:

PHP程式碼如下:

<?php

$filename = &#39;001.jpg&#39;;

// 最大宽度和高度
$width = 100;
$height = 100;

// 文件类型
header(&#39;Content-Type: image/jpg&#39;);

// 新尺寸
list($width_orig, $height_orig) = getimagesize($filename);

$ratio_orig = $width_orig/$height_orig;

if ($width/$height > $ratio_orig) {
    $width = $height*$ratio_orig;
} else {
    $height = $width/$ratio_orig;
}

// 重采样的图像
$image_p = imagecreatetruecolor($width, $height);
$image = imagecreatefromjpeg($filename);

imagecopyresampled($image_p, $image, 0, 0, 0, 0,
    $width, $height, $width_orig, $height_orig);

// 输出图像
imagejpeg($image_p, null, 100);
登入後複製

效果如下:

PHP也能調整JPEG影像大小!

這裡就需要大家掌握一個重要函數imagecopyresampled()

(函數適用版本PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8)

imagecopyresampled  — 重取樣拷貝部分影像並調整大小;

語法:

imagecopyresampled(
    resource $dst_image,
    resource $src_image,
    int $dst_x,
    int $dst_y,
    int $src_x,
    int $src_y,
    int $dst_w,
    int $dst_h,
    int $src_w,
    int $src_h
): bool
登入後複製

參數分別表示:

dst_image:目标图象资源。
src_image:源图象资源。
dst_x:目标 X 坐标点。
dst_y:目标 Y 坐标点。
src_x:源的 X 坐标点。
src_y:源的 Y 坐标点。
dst_w:目标宽度。
dst_h:目标高度。
src_w:源图象的宽度。
src_h:源图象的高度。
登入後複製

imagecopyresampled() 將一幅影像中的一塊正方形區域拷貝到另一個影像中,平滑地插入像素值,因此,尤其是,減小了影像的大小而仍然保持了極大的清晰度。

In other words, imagecopyresampled() will take a rectangular area from src_image of width src_w and height src_h at position (src_x,src_y) and place it in a rectangular area of dst_image of width dst_w and height dst_h at position (dst_x,dst_y).
登入後複製

如果來源和目標的寬度和高度不同,則會進行相應的影像收縮和拉伸。座標指的是左上角。本函數可用於在同一幅圖內部拷貝(如果 dst_image 和 src_image 相同的話)區域,但如果區域交迭的話則結果不可預知。

最後推薦給大家最新、最全面的《PHP影片教學》~快來學習吧!

以上是PHP也能調整JPEG影像大小!的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
php
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!