Hướng dẫn dùng webp conversion trong PHP

Hàm imagewebp() trong PHP có nhiệm vụ xuất ra một file ảnh định dạng webp ra trình duyệt hoặc thư mục. Cú pháp hàm imagewebp() trong PHP như sau:

imagewebp ( resource $image [, mixed $to = NULL [, int $quality = 80 ]] ) : bool

  • Tham số truyền vào 
  • Giá trị trả về
  • Ví dụ minh họa
  • Ứng dụng
  • Các hàm liên quan

Tham số truyền vào 

  • $image là nguồn của ảnh được tạo ra từ một hàm tạo ảnh, như imagecreatetruecolor().
  • $to là đường dẫn lưu file khi xuất thành công, nếu $to rỗng hình ảnh sẽ được xuất trực tiếp.
  • $quality là chất lượng hình ảnh khi xuất hình.

Giá trị trả về

Hàm này trả về TRUE nếu thành công và FALSE nếu thất bại.

Ví dụ minh họa

<?php
// Tạo một khung ảnh
$im = imagecreatetruecolor(120, 20);
//Xác định màu sắc của nội dung
$text_color = imagecolorallocate($im, 233, 14, 91);
//Xác định cỡ font-size, vị trí toạ đố X - Y của TEXT và Giá trị của TEXT
imagestring($im, 1, 5, 5,  'WebP with PHP', $text_color);

// Lưu hình ảnh và tên
imagewebp($im, 'php.webp');

// Xoá thông tin về hình ảnh khỏi bộ nhớ
imagedestroy($im);

?>

Và kết quả trả về tương ứng sẽ là một file ảnh webp có nội dung như bên dưới.

Hướng dẫn dùng webp conversion trong PHP

Ứng dụng

<?php

$dir 'img/countries/';
$name 'brazil.png';
$newName 'brazil.webp';

$img imagecreatefrompng($dir $name);
imagepalettetotruecolor($img);
imagealphablending($imgtrue);
imagesavealpha($imgtrue);
imagewebp($img$dir $newName100);
imagedestroy($img);

?>

Trong ví dụ trên bạn có thể sử dụng hàm này kết hợp với các hàm khác để chuyển đổi các hình ảnh từ định dạng khác sang định dạng ảnh webp.

Một ví dụ khác cũng là việc chuyển đổi từ định dạng ảnh PNG sang ảnh Webp.

function compress_png($path_to_png_file, $max_quality = 90)
{
    if (!file_exists($path_to_png_file)) {
        throw new Exception("File does not exist: $path_to_png_file");
    }

    // guarantee that quality won't be worse than that.
    $min_quality = 60;

    // '-' makes it use stdout, required to save to $compressed_png_content variable
    // '<' makes it read from the given file path
    // escapeshellarg() makes this safe to use with any path
    $compressed_png_content = shell_exec("pngquant --quality=$min_quality-$max_quality - < ".escapeshellarg(    $path_to_png_file));

    if (!$compressed_png_content) {
        throw new Exception("Conversion to compressed PNG failed. Is pngquant 1.8+ installed on the server?");
    }

    return $compressed_png_content;
}
$read_from_path $_FILE['file']['tmp_name'];
//url file
$save_to_path "uploads/compressed_file.png";
//url save file
$compressed_png_content compress_png($read_from_path);
file_put_contents($save_to_path$compressed_png_content);imagewebp(imagecreatefrompng($read_from_path), $save_to_path ".webp");
?>

Các hàm liên quan

  • imagecreatetruecolor() hàm tạo một khung ảnh với 2 tham số width,height.
  • imagecolorallocate() hàm xác định giá trị màu sắc theo chuẩn màu rgb.
  • imagestring() hàm tạo text vào ảnh.

Hi vọng với bài viết này, bạn đã hiểu rõ cách sử dụng hàm imagewebp() trong PHP. Nếu thấy bài viết hay và ý nghĩa, hãy like và chia sẻ với bạn bè để mọi người cùng nhau học tập nhé. Cảm ơn bạn đã ghé thăm codetutam.com