Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk mengendalikan pemampatan imej semasa menyimpan imej jauh menggunakan PHP?

Bagaimana untuk mengendalikan pemampatan imej semasa menyimpan imej jauh menggunakan PHP?

王林
王林asal
2023-07-15 15:57:07832semak imbas

Bagaimana untuk mengendalikan pemampatan imej semasa menyimpan imej jauh menggunakan PHP?

Dalam pembangunan sebenar, kita selalunya perlu mendapatkan gambar dari rangkaian dan menyimpannya ke pelayan tempatan. Walau bagaimanapun, sesetengah imej jauh mungkin terlalu besar, yang memerlukan kami memampatkannya untuk mengurangkan ruang storan dan meningkatkan kelajuan pemuatan. PHP menyediakan beberapa sambungan berkuasa untuk mengendalikan pemampatan imej, yang paling biasa digunakan ialah perpustakaan GD dan perpustakaan Imagick.

Perpustakaan GD ialah perpustakaan pemprosesan imej popular yang menyediakan banyak fungsi untuk mencipta, mengedit dan menyimpan imej. Berikut ialah contoh penggunaan pustaka GD untuk pemampatan imej:

function compressImage($url, $newName, $quality = 75) {
    // 从URL获取图片
    $image = file_get_contents($url);
    
    // 创建图像资源
    $imageRes = imagecreatefromstring($image);
    
    // 获取图像信息
    $width = imagesx($imageRes);
    $height = imagesy($imageRes);
    
    // 创建新图像资源
    $newImageRes = imagecreatetruecolor($width, $height);
    
    // 复制并压缩图像
    imagecopyresampled($newImageRes, $imageRes, 0, 0, 0, 0, $width, $height, $width, $height);
    
    // 保存图像
    imagejpeg($newImageRes, $newName, $quality);
    
    // 释放资源
    imagedestroy($newImageRes);
    imagedestroy($imageRes);
}

Kod di atas mula-mula menggunakan fungsi file_get_contents untuk mendapatkan imej daripada URL yang ditentukan dan menyimpannya ke dalam pembolehubah $image Medium. Kemudian, tukarkannya kepada sumber imej yang diperlukan oleh pustaka GD melalui fungsi imagecreatefromstring. file_get_contents函数从指定的URL获取图片,并将其存储到变量$image中。然后,通过imagecreatefromstring函数将其转换为GD库所需的图像资源。

接下来,获取图像的宽度和高度,并使用imagecreatetruecolor函数创建一个与原始图像大小相同的新图像资源。

然后,使用imagecopyresampled函数将原始图像复制到新图像资源中,并进行压缩。这里的压缩质量由$quality参数指定,默认为75。

最后,通过imagejpeg函数将压缩后的图像保存到指定的文件名$newName中。

在使用这个函数时,你可以根据需要进行调整。你可以通过修改$quality参数的值来改变压缩质量,数值越高表示质量越好,文件大小越大。

除了GD库,还可以使用Imagick库来进行图片压缩。Imagick是一个强大的图像处理库,它提供了更多高级的图片处理功能。以下是使用Imagick库进行图片压缩的示例:

function compressImage($url, $newName, $quality = 75) {
    // 实例化Imagick对象
    $image = new Imagick($url);
    
    // 设置压缩质量
    $image->setImageCompressionQuality($quality);
    
    // 保存图像
    $image->writeImage($newName);
    
    // 销毁对象
    $image->destroy();
}

使用Imagick库时,首先通过new Imagick创建一个Imagick对象,并将远程图片的URL作为参数传递给它。

然后,使用setImageCompressionQuality方法来设置压缩质量。

最后,使用writeImage方法将压缩后的图像保存到指定的文件名$newName中,并使用destroy

Seterusnya, dapatkan lebar dan ketinggian imej dan gunakan fungsi imagecreatetruecolor untuk mencipta sumber imej baharu dengan saiz yang sama dengan imej asal.

Kemudian, gunakan fungsi imagecopyresampled untuk menyalin imej asal ke dalam sumber imej baharu dan memampatkannya. Kualiti mampatan di sini ditentukan oleh parameter $quality dan lalainya ialah 75. 🎜🎜Akhir sekali, simpan imej termampat ke nama fail yang ditentukan $newName melalui fungsi imagejpeg. 🎜🎜Apabila menggunakan fungsi ini, anda boleh melaraskannya mengikut keperluan. Anda boleh menukar kualiti mampatan dengan mengubah suai nilai parameter $quality Semakin tinggi nilai, semakin baik kualiti dan semakin besar saiz fail. 🎜🎜Selain perpustakaan GD, anda juga boleh menggunakan perpustakaan Imagick untuk pemampatan imej. Imagick ialah perpustakaan pemprosesan imej yang berkuasa yang menyediakan fungsi pemprosesan imej yang lebih maju. Berikut ialah contoh pemampatan imej menggunakan pustaka Imagick: 🎜rrreee🎜 Apabila menggunakan pustaka Imagick, mula-mula buat objek Imagick melalui Imagick baharu dan hantarkannya URL imej jauh sebagai parameter. 🎜🎜Kemudian, gunakan kaedah setImageCompressionQuality untuk menetapkan kualiti mampatan. 🎜🎜Akhir sekali, gunakan kaedah writeImage untuk menyimpan imej termampat pada nama fail $newName dan gunakan kaedah musnah untuk memusnahkan objek. 🎜🎜Sama ada anda menggunakan perpustakaan GD atau perpustakaan Imagick, anda boleh memilih kaedah yang sesuai untuk anda untuk pemampatan imej mengikut keperluan anda. Kaedah ini bukan sahaja dapat mengurangkan ruang storan imej, tetapi juga meningkatkan kelajuan memuatkan halaman web dan meningkatkan pengalaman pengguna. 🎜

Atas ialah kandungan terperinci Bagaimana untuk mengendalikan pemampatan imej semasa menyimpan imej jauh menggunakan 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