PHP में इमेज प्रोसेसिंग: GD और Imagick लाइब्रेरी
इमेज प्रोसेसिंग वेब डेवलपमेंट का एक अहम हिस्सा है। PHP में इसके लिए दो मुख्य लाइब्रेरी हैं: GD (बिल्ट-इन) और Imagick (ImageMagick का रैपर)। इस आर्टिकल में हम इनकी क्षमताओं को समझेंगे, इमेज का आकार बदलना, क्रॉप करना, वॉटरमार्क लगाना और ऑप्टिमाइज़ करना सीखेंगे।
1. GD लाइब्रेरी
GD एक स्टैंडर्ड PHP एक्सटेंशन है जो ज़्यादातर होस्टिंग पर उपलब्ध है। यह JPEG, PNG, GIF, WebP फॉर्मेट में इमेज बनाने, बदलने और सेव करने की सुविधा देता है।
कनेक्शन और जाँच:
<?php
// जाँचें कि GD एक्सटेंशन इंस्टॉल है या नहीं
if (extension_loaded('gd') && function_exists('gd_info')) {
echo "GD इंस्टॉल है: ";
print_r(gd_info());
} else {
echo "GD नहीं मिला";
}
?>
1.1 इमेज का आकार बदलना (resize)
सबसे आम काम है इमेज को अनुपात बनाए रखते हुए छोटा करना।
<?php
function resizeImage($sourcePath, $destPath, $newWidth, $newHeight) {
// मूल इमेज के आयाम प्राप्त करें
list($width, $height, $type) = getimagesize($sourcePath);
// मूल फ़ाइल से रिसोर्स बनाएँ
switch ($type) {
case IMAGETYPE_JPEG:
$source = imagecreatefromjpeg($sourcePath);
break;
case IMAGETYPE_PNG:
$source = imagecreatefrompng($sourcePath);
break;
case IMAGETYPE_GIF:
$source = imagecreatefromgif($sourcePath);
break;
default:
return false;
}
// नई इमेज बनाएँ
$newImage = imagecreatetruecolor($newWidth, $newHeight);
// PNG/GIF के लिए पारदर्शिता बनाए रखें
imagealphablending($newImage, false);
imagesavealpha($newImage, true);
// कॉपी और स्केल करें
imagecopyresampled($newImage, $source, 0, 0, 0, 0, $newWidth, $newHeight, $width, $height);
// परिणाम सेव करें
imagejpeg($newImage, $destPath, 85); // क्वालिटी 85%
// मेमोरी खाली करें
imagedestroy($source);
imagedestroy($newImage);
return true;
}
// उपयोग का उदाहरण
resizeImage('photo.jpg', 'photo_thumb.jpg', 300, 200);
?>
1.2 इमेज क्रॉप करना (crop)
क्रॉप करके इमेज के बीच के हिस्से को वांछित आकार में लाया जा सकता है।
<?php
function cropCenter($sourcePath, $destPath, $cropWidth, $cropHeight) {
list($width, $height) = getimagesize($sourcePath);
$source = imagecreatefromjpeg($sourcePath);
// केंद्र के निर्देशांक निकालें
$x = ($width - $cropWidth) / 2;
$y = ($height - $cropHeight) / 2;
$newImage = imagecreatetruecolor($cropWidth, $cropHeight);
imagecopyresampled($newImage, $source, 0, 0, $x, $y, $cropWidth, $cropHeight, $cropWidth, $cropHeight);
imagejpeg($newImage, $destPath, 90);
imagedestroy($source);
imagedestroy($newImage);
}
cropCenter('photo.jpg', 'photo_cropped.jpg', 400, 400);
?>
1.3 वॉटरमार्क लगाना
इमेज के ऊपर टेक्स्ट या लोगो जोड़ना।
<?php
function addWatermarkText($sourcePath, $destPath, $text = "© PythonLib.ru") {
$source = imagecreatefromjpeg($sourcePath);
$width = imagesx($source);
$height = imagesy($source);
// टेक्स्ट का रंग (पारदर्शिता के साथ सफेद)
$color = imagecolorallocatealpha($source, 255, 255, 255, 50);
// फ़ॉन्ट का आकार (बिल्ट-इन फ़ॉन्ट)
$fontSize = 5;
$x = 10;
$y = $height - 20;
imagestring($source, $fontSize, $x, $y, $text, $color);
imagejpeg($source, $destPath, 90);
imagedestroy($source);
}
addWatermarkText('photo.jpg', 'photo_watermarked.jpg');
?>
2. Imagick लाइब्रेरी
Imagick PHP का एक एक्सटेंशन है जो ImageMagick के साथ काम करता है। यह और भी शक्तिशाली सुविधाएँ प्रदान करता है: काम