Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk mengoptimumkan pemampatan dan pemuatan imej dalam pembangunan PHP

Bagaimana untuk mengoptimumkan pemampatan dan pemuatan imej dalam pembangunan PHP

WBOY
WBOYasal
2023-10-08 18:18:11720semak imbas

Bagaimana untuk mengoptimumkan pemampatan dan pemuatan imej dalam pembangunan PHP

Cara mengoptimumkan pemampatan imej dan pemuatan pengoptimuman dalam pembangunan PHP

Abstrak:
Dalam laman web, gambar membolehkan pengguna mendapatkan maklumat lanjut Elemen penting pengalaman intuitif dan menarik. Walau bagaimanapun, fail imej biasanya lebih besar dan lebih perlahan untuk dimuatkan, yang boleh menjejaskan prestasi tapak web dan pengalaman pengguna. Artikel ini akan memperkenalkan secara terperinci cara menggunakan pembangunan PHP untuk mengoptimumkan pemampatan dan pemuatan imej, dan memberikan contoh kod khusus.

Sila ambil perhatian: Kod yang digunakan dalam artikel ini perlu digunakan dengan konfigurasi persekitaran pelayan dan modul pengembangan Sila laraskan langkah operasi dan kaedah konfigurasi mengikut situasi sebenar anda.

  1. mampatan imej
    Mampatan imej ialah kaedah biasa untuk mengurangkan saiz fail imej. Berikut ialah contoh kod untuk pemampatan imej menggunakan PHP:
<?php
function compressImage($source, $destination, $quality) {
    $info = getimagesize($source);
    
    if ($info['mime'] == 'image/jpeg') {
        $image = imagecreatefromjpeg($source);
    } elseif ($info['mime'] == 'image/png') {
        $image = imagecreatefrompng($source);
    }
    
    imagejpeg($image, $destination, $quality);
    
    return $destination;
}

// 压缩图片
$sourceImage = 'path/to/source/image.jpg';
$destinationImage = 'path/to/destination/image.jpg';

$compressedImage = compressImage($sourceImage, $destinationImage, 80);
echo '压缩后的图片路径:' . $compressedImage;
?>

Dalam kod di atas, fungsi compressImage digunakan untuk memampatkan imej. Fungsi ini menerima laluan imej sumber, laluan imej sasaran dan kualiti imej sebagai parameter. Bergantung pada format sebenar imej (JPEG atau PNG), gunakan fungsi imagecreatefromjpeg atau imagecreatefrompng untuk mencipta sumber imej dan kemudian gunakan imagejpeg untuk menyimpan sumber imej ke sasaran dalam laluan. compressImage函数来压缩图片。该函数接受源图片路径、目标图片路径和图片质量作为参数。根据图片的实际格式(JPEG或PNG),使用imagecreatefromjpegimagecreatefrompng函数创建图像资源,然后使用imagejpeg将图像资源保存到目标路径中。

  1. 图片加载优化
    除了通过压缩图片来减小文件大小,还可以通过以下方法来优化图片的加载速度。

2.1 响应式图片
当用户使用不同设备访问网站时,可以根据设备的屏幕尺寸自动加载适合的图片大小。以下是一个使用srcsetsizes属性来实现响应式图片的示例代码:

<img src="path/to/image.jpg"
     srcset="path/to/small/image.jpg 500w,
             path/to/medium/image.jpg 1000w,
             path/to/large/image.jpg 1500w"
     sizes="(max-width: 768px) 90vw,
            (max-width: 1200px) 70vw,
            50vw"
     alt="Responsive Image">

上述代码中,srcset属性包含多个备选图片路径和它们的宽度(w)值。sizes属性指定了不同屏幕尺寸下的图片大小。浏览器会根据当前设备的屏幕宽度和sizes属性的定义来选择合适的图片进行加载。

2.2 图片懒加载
图片懒加载是指当用户滚动到可见的区域时,才加载图片。以下是一个使用Lazy Load插件来实现图片懒加载的示例代码:

<img src="placeholder.jpg"
     data-src="path/to/image.jpg"
     alt="Lazy Load Image"
     class="lazy">
// 引入 Lazy Load 插件的 js 文件

document.addEventListener("DOMContentLoaded", function() {
    var lazyImages = [].slice.call(document.querySelectorAll("img.lazy"));

    if ("IntersectionObserver" in window) {
        let lazyImageObserver = new IntersectionObserver(function(entries, observer) {
            entries.forEach(function(entry) {
                if (entry.isIntersecting) {
                    let lazyImage = entry.target;
                    lazyImage.src = lazyImage.dataset.src;
                    lazyImage.classList.remove("lazy");
                    lazyImageObserver.unobserve(lazyImage);
                }
            });
        });

        lazyImages.forEach(function(lazyImage) {
            lazyImageObserver.observe(lazyImage);
        });
    }
});

上述代码中,data-src属性指定了真实的图片路径,placeholder.jpg是一个占位图片。IntersectionObserver是一个新的浏览器API,用于检测元素是否进入视口。当图片进入视口时,通过设置src

    Pengoptimuman pemuatan imej

    Selain memampatkan imej untuk mengurangkan saiz fail, anda juga boleh mengoptimumkan kelajuan pemuatan imej melalui kaedah berikut.

    2.1 Imej responsif

    Apabila pengguna mengakses tapak web menggunakan peranti berbeza, saiz imej yang sesuai boleh dimuatkan secara automatik mengikut saiz skrin peranti. Berikut ialah contoh kod yang menggunakan atribut srcset dan sizes untuk melaksanakan imej responsif: #🎜🎜#rrreee#🎜🎜#Dalam kod di atas, srcset Atribut The code> mengandungi berbilang laluan imej alternatif dan nilai lebarnya (w). Atribut sizes menentukan saiz imej untuk saiz skrin yang berbeza. Penyemak imbas akan memilih imej yang sesuai untuk dimuatkan berdasarkan lebar skrin peranti semasa dan takrifan atribut saiz. #🎜🎜##🎜🎜#2.2 Malas memuatkan imej #🎜🎜# Malas memuatkan imej bermakna imej hanya dimuatkan apabila pengguna menatal ke kawasan yang boleh dilihat. Berikut ialah contoh kod yang menggunakan pemalam Lazy Load untuk melaksanakan pemuatan malas imej: #🎜🎜#rrreeerrreee#🎜🎜#Dalam kod di atas, data-src menentukan laluan imej yang benar, placeholder.jpg ialah imej pemegang tempat. IntersectionObserver ialah API penyemak imbas baharu untuk mengesan sama ada elemen memasuki ruang pandang. Apabila imej memasuki port pandangan, muatkan imej sebenar dengan menetapkan atribut src. #🎜🎜##🎜🎜#Kesimpulan: #🎜🎜# Dengan menggunakan kaedah di atas, kami boleh mengoptimumkan pemampatan dan pemuatan imej dalam pembangunan PHP, dengan itu meningkatkan prestasi dan pengalaman pengguna tapak web. Dengan memampatkan fail imej dan mengoptimumkan kaedah pemuatan, anda boleh mengurangkan saiz fail imej dengan ketara dan meningkatkan kelajuan pemuatan tapak web. Dalam pembangunan sebenar, kita boleh memilih kaedah yang sesuai mengikut keperluan untuk mencapai pemampatan imej dan pengoptimuman pemuatan. #🎜🎜##🎜🎜# (Nota: Kod sampel dalam artikel ini adalah untuk rujukan dan pembelajaran sahaja. Sila laraskan operasi khusus mengikut keperluan dan konfigurasi sebenar.) #🎜🎜#

Atas ialah kandungan terperinci Bagaimana untuk mengoptimumkan pemampatan dan pemuatan imej dalam pembangunan PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn