Rumah >pembangunan bahagian belakang >masalah PHP >Bagaimana untuk memampatkan imej dalam php tanpa herotan

Bagaimana untuk memampatkan imej dalam php tanpa herotan

王林
王林asal
2023-05-06 18:26:071956semak imbas

Dengan perkembangan teknologi Internet, gambar telah menjadi bahagian yang tidak boleh diketepikan dalam reka bentuk web, tetapi dengannya datang masalah kelajuan memuatkan. Untuk membuat halaman web lebih cepat, imej mesti dimampatkan, tetapi proses pemampatan boleh menyebabkan herotan imej dengan mudah Dalam kes ini, kita perlu menggunakan teknologi yang lebih maju. Dalam artikel ini, kami akan memperkenalkan cara menggunakan PHP untuk memampatkan imej tanpa herotan.

1. Gunakan pustaka GD PHP

Pustaka GD PHP ialah perpustakaan grafik yang biasa digunakan yang boleh digunakan untuk mengendalikan pelbagai operasi grafik, seperti penskalaan, pemangkasan, pemutaran dan penandaan air. Dengan memanfaatkan perpustakaan ini, kami boleh memampatkan imej kepada saiz yang ditentukan tanpa herotan. Mari kita lihat cara menggunakan perpustakaan GD PHP untuk pemampatan imej.

Pertama, pastikan PHP anda telah memasang pustaka GD. Jika ia tidak dipasang, anda boleh memasangnya melalui arahan berikut:

sudo apt-get install php-gd

Selepas pemasangan, kita boleh menulis kod untuk memampatkan imej. Pertama, kita perlu memuatkan imej:

<?php
// 加载原图片
$src_file = 'source.jpg';
$image = imagecreatefromjpeg($src_file);
?>

Seterusnya, kita perlu menentukan saiz imej termampat:

<?php
// 加载原图片
$src_file = 'source.jpg';
$image = imagecreatefromjpeg($src_file);

// 指定压缩后的图片大小
$max_width = 600;
$max_height = 400;
?>

Kemudian, kita perlu mengira saiz sebenar dan nisbah mampatan imej:

<?php
// 加载原图片
$src_file = 'source.jpg';
$image = imagecreatefromjpeg($src_file);

// 指定压缩后的图片大小
$max_width = 600;
$max_height = 400;

// 计算出图片的实际大小及压缩比例
$width = imagesx($image);
$height = imagesy($image);
$scale = min($max_width/$width, $max_height/$height, 1);

// 计算出压缩后的大小
$new_width = round($scale*$width);
$new_height = round($scale*$height);
?>

Sekarang kita mempunyai saiz sebenar dan nisbah mampatan imej, langkah seterusnya ialah memampatkan imej kepada saiz yang ditentukan:

<?php
// 加载原图片
$src_file = 'source.jpg';
$image = imagecreatefromjpeg($src_file);

// 指定压缩后的图片大小
$max_width = 600;
$max_height = 400;

// 计算出图片的实际大小及压缩比例
$width = imagesx($image);
$height = imagesy($image);
$scale = min($max_width/$width, $max_height/$height, 1);

// 计算出压缩后的大小
$new_width = round($scale*$width);
$new_height = round($scale*$height);

// 创建新图片
$new_image = imagecreatetruecolor($new_width, $new_height);

// 复制原图片到新图片并压缩
imagecopyresampled($new_image, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);

// 保存压缩后的图片
imagejpeg($new_image, 'compressed.jpg', 90);
?>

Langkah terakhir ialah menyimpan imej termampat , di sini kita menggunakan imagejpeg() Fungsi disimpan dalam format JPEG, dan parameter ketiga ialah kualiti mampatan Semakin besar nilai, semakin tinggi kualiti dan semakin besar fail.

2. Gunakan perpustakaan pihak ketiga: TinyPNG

Selain menggunakan perpustakaan GD PHP untuk pemampatan, kami juga boleh menggunakan beberapa perpustakaan pihak ketiga untuk operasi. Antaranya, perpustakaan imej termampat yang sangat baik ialah TinyPNG. Ia boleh memampatkan JPEG, PNG dan imej lain kepada saiz terkecil tanpa herotan sama sekali.

Pertama, kita perlu mendaftar di tapak web rasmi TinyPNG dan menjana Kunci API. Kemudian, anda boleh memampatkan imej secara terus melalui API. Berikut ialah kod untuk menggunakan TinyPNG untuk pemampatan imej:

<?php
require_once 'vendor/autoload.php';

// 指定图片路径
$file = 'source.jpg';

// 压缩图片并保存
\Tinify\setKey("YOUR_API_KEY");
\Tinify\fromFile($file)->toFile('compressed.jpg');
?>

Di sini, kami menggunakan PHP SDK yang disediakan secara rasmi dan menentukan Kunci API dalam kod Kemudian kami boleh menggunakan kaedah fromFile() untuk memuatkan imej untuk mampatan , kaedah toFile() menyimpan imej termampat ke laluan yang ditentukan.

Ringkasan

Sama ada anda menggunakan pustaka GD PHP atau pustaka pihak ketiga TinyPNG untuk pemampatan imej, anda boleh mengurangkan saiz fail imej sebanyak mungkin dan meningkatkan kelajuan pemuatan tapak web sambil memastikan kualiti imej. Dalam projek sebenar, kita perlu memilih mengikut situasi tertentu dan menggunakannya secara fleksibel. Melakukan tugas pemampatan imej dengan baik bukan sahaja boleh meningkatkan prestasi halaman web, tetapi juga memberikan pengguna pengalaman akses yang lebih baik.

Atas ialah kandungan terperinci Bagaimana untuk memampatkan imej dalam php tanpa herotan. 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