एक समान प्रभाव प्राप्त करने के एक अलग तरह से एक अनूठा पृष्ठभूमि रंग के साथ एक नई छवि पर png फाइल पेस्ट अस्थायी रूप से पारदर्शिता को दूर करने, और पारदर्शी सेट करने के लिए है इसके बजाय पीएनजी छवि का रंग काला सर्कल रंग में। फिर जब आप इसे जेपीईजी छवि पर रखते हैं, तो आप मास्क के रंग में नया पारदर्शी रंग सेट करते हैं।
// Load the Black Circle PNG image
$png = imagecreatefrompng('mask.png');
$width = imagesx($png);
$height = imagesy($png);
// Create a mask image
$mask = imagecreatetruecolor($width, $height);
// We'll use Magenta as our new transparent colour - set it as the solid background colour.
$magenta = imagecolorallocate($mask, 255, 0, 255);
imagefill($mask, 0, 0, $magenta);
// Copy the png image onto the mask. Destroy it to free up memory.
imagecopyresampled($mask, $png, 0, 0, 0, 0, $width, $height, $width, $height);
imagedestroy($png);
// Set the black portion of the mask to transparent.
$black = imagecolorallocate($mask, 0, 0, 0);
imagecolortransparent($mask, $black);
// Load JPEG image.
$jpg = imagecreatefromjpeg('image.jpg');
$j_width = imagesx($jpg);
$j_height = imagesx($jpg);
// Enable alpha blending and copy the png image
imagealphablending($jpg, true);
imagecopyresampled($jpg, $mask, 0, 0, 0, 0, $j_width, $j_height, $width, $height);
imagedestroy($mask);
// Set the new transparent colour and output new image to browser as a png.
$magenta = imagecolorallocate($jpg, 255, 0, 255);
imagecolortransparent($jpg, $magenta);
imagepng($jpg);
resampling या अर्द्ध पारदर्शी पिक्सेल एक मुखौटा के रूप में एक png का उपयोग कर नीचे आप मिल रहे हैं, बजाय, आप सम्मिश्रण अक्षम करने के बजाय $mask
छवि पर एक पारदर्शी आकार आकर्षित कर सकते हैं।
// Load JPEG Image.
$jpg = imagecreatefromjpeg('image.jpg');
$width = imagesx($jpg);
$height = imagesx($jpg);
// Create mask at same size with an opaque background.
$mask = imagecreatetruecolor($width, $height);
$magenta = imagecolorallocate($mask, 255, 0, 255);
imagefill($mask, 0, 0, $magenta);
// Disable alpha blending and draw a transparent shape onto the mask.
$transparent = imagecolorallocatealpha($mask, 255, 255, 255, 127);
imagealphablending($mask, false);
imagefilledellipse($mask, round($width/2), round($height/2), $width, $height, $transparent);
// Paste the mask onto the original image and set the new transparent colour.
imagealphablending($jpg, true);
imagecopyresampled($jpg, $mask, 0, 0, 0, 0, $width, $height, $width, $height);
imagedestroy($mask);
$magenta = imagecolorallocate($jpg, 255, 0, 255);
imagecolortransparent($jpg, $magenta);
// Output new image to browser as a png.
imagepng($jpg);
नोट: उपर्युक्त कोड अनचाहे है, लेकिन उम्मीद है कि आपको इसकी आवश्यकता है।
धन्यवाद, यह वास्तव में उपयोगी है – Matt
मुझे पता है कि यह पोस्ट कुछ समय के लिए बंद कर दिया गया है, लेकिन रनटाइम कैसा दिख रहा था जब आप इस स्क्रिप्ट को चलाते थे? यह औसत 20 सेकंड या उससे अधिक समय ले रहा है ... मेरा स्रोत/मुखौटा छवियां 250 x 170px हैं ... क्या आप लोगों के बारे में क्या कर रहे हैं? –
निराश, सुनिश्चित नहीं है कि मैं क्या गलत कर रहा था लेकिन यह अब बहुत अच्छा काम करता है: पी धन्यवाद दोस्तों! –