1. ImageMagick là gì?
ImageMagick là một phần mềm (hay thư viện) xử lí file ảnh mạnh mẽ và nổi tiếng, giúp dùng dùng dễ dàng thực hiện các thao tác đơn giản như: dịch chuyển, thay đổi kích thước, xoay, kéo xiên, thu phóng hỉnh, điều chỉnh màu sắc, vẽ vẵn bản, hình học… cho đến các thao tác tạo hiệu hứng phức tạp như các bộ lọc gotham, lomo, kelvin, toaster (bộ lọc phức tạp nhất) và nashville (bộ lọc phổ biến nhất).
ImageMagick tương thích với nhiều định dạng ảnh và có giao diện (API) phong phú.
2. Imagick PHP là gì?
Cũng giống như GD, Imagick là một extension của PHP dùng để tạo và sửa đổi các ảnh sử dụng ImageMagick API.
Imagick hỗ trợ thay đổi kích thước, định dạng ảnh, chỉnh sửa hàng loạt ảnh với tốc độ nhanh, thêm hiệu ứng cho ảnh, loại bỏ các phần kém chất lượng trên ảnh, tạo ảnh động,…
3. So sánh Imagick với GD
– Cả Imagick và GD đều là extension của PHP, sử dụng với cùng mục đích là xử lý ảnh. Tuy nhiên, Imagick thể hiện sự vượt trội hơn so với GD.
– Các type hỗ trợ: GD chỉ hỗ trợ các file JPG, PNG, GIF, WBMP, WebP, XBM và XPM files. Trong khi đó, Imagick hỗ trợ hơn 100 định dạng file khác nhau.
– Các hàm hỗ trợ: Cả GD và Imagick đều hỗ trợ các hàm cơ bản như: resize, crop ảnh, tạo ảnh là tổng hợp của các hình khối, text và các file ảnh khác, hỗ trợ các bộ lọc cho ảnh. Tuy nhiên, nếu bạn muốn nâng cao hơn, thì Imagick là sự lựa chọn tối ưu, do nó cung cấp khoảng hơn 300 hàm giúp bạn có thể xử lý ảnh một cách hiệu quả nhất.
– Hiệu suất: Hiệu suất của GD và Imagick gần như là tương đương.
– Coding style: Imagick có cấu trúc đơn giản hơn nhiều so với GD
– Tính phổ biến: GD được include mặc định vào các version của PHP, do đó, GD được sử dụng và biết đến nhiều hơn so với Imagick.
4. Một số ví dụ về hàm Imagick trên PHP:
– Lấy thông tin ảnh
<?php
$im = new Imagick('image.jpg');
// get image length
$im->getImageLength();
// get image format
$im->getFormat();
// get image size
$im->getImageSize();
// get image file name
$im->getImageFilename();
// get image mime type
$im->getImageMimeType();
// get all information of image
$im->identifyimage();
?>
– Thay đổi thuộc tính của ảnh
<?php
$im = new Imagick('image.jpg');
// convert image with format jpg to png
$im->setImageFormat('png');
// resize image
$im->resizeImage(320, 240, Imagick::FILTER_LANCZOS, 1);
// change image quality
$im->setCompressionQuality(75);
// change dpi image
$im->setResolution(96, 96);
//write image
$im->writeImage('image.png');
?>
– Tạo ảnh động
<?php
$im = new Imagick();
$im->setFormat("gif");
$_FILES['image0']="/data/C4Drz.png";
$_FILES['image1']="/data/DuCIz.png";
$_FILES['image2']="/data/fwrko.png";
$_FILES['image3']="/data/GOWmh.png";
for ($i = 0; $i < sizeof($_FILES); ++$i) {
$im = new Imagick();
$im->readImage($_FILES["image$i"]);
$im->setImageDispose(2);
$im->setImageDelay(100);
$im->addImage($frame);
}
$im->writeImages("/data/allimage.gif" , true);
?>
Link tham khảo:
http://www.imagemagick.org/script/index.php