2012-02-20 17 views
7

के साथ दो पीएनजी छवियों को मर्ज करें क्या किसी के पास एक स्क्रिप्ट है जो दो पीएनजी छवियों को मर्ज कर सकती है?PHP जीडी लाइब्रेरी

निम्नलिखित शर्तों के साथ :

  • दोनों छवियों पारदर्शी क्षेत्रों
  • दूसरी छवि 50% अस्पष्टता (यह पहली छवि के ऊपर डाला जाता है)

होना आवश्यक है यहां मैंने जो करने की कोशिश की लेकिन भाग्य के बिना:

<?php 

function imagecopymerge_alpha($dst_im, $src_im, $dst_x, $dst_y, $src_x, $src_y, $src_w, $src_h, $pct){ 
    $cut = imagecreatetruecolor($src_w, $src_h); 
    imagecopy($cut, $dst_im, 0, 0, $dst_x, $dst_y, $src_w, $src_h); 
    imagecopy($cut, $src_im, 0, 0, $src_x, $src_y, $src_w, $src_h); 
    imagecopymerge($dst_im, $cut, $dst_x, $dst_y, 0, 0, $src_w, $src_h, $pct); 
} 

$image1 = imagecreatefrompng('a.png'); //300 x 300 
$image2 = imagecreatefrompng('b.png'); //150 x 150 

$merged_image = imagecreatetruecolor(300, 300); 
imagealphablending($merged_image, false); 
imagesavealpha($merged_image, true); 

imagecopy($merged_image, $image1, 0, 0, 0, 0, 300, 300); 
imagecopymerge_alpha($merged_image, $image2, 0, 0, 0, 0, 150, 150, 50); 

header('Content-Type: image/png'); 
imagepng($merged_image); 

?> 

संपादित करें:

  • पहले छवि (बाएं) और दूसरा छवि (सही)

enter image description hereenter image description here

  • इस तरह यह होना चाहिए (बाएं) और मेरे कोड का परिणाम (दाएं)

enter image description hereenter image description here

  • dqhendricks

enter image description here

+2

* लेकिन भाग्य के बिना बारे में बताएं *। आपके द्वारा पोस्ट किए गए कोड का क्या उत्पादन होता है? –

+2

स्टैक ओवरफ़्लो में आपका स्वागत है! "यह काम नहीं करता है" कभी * एक अच्छा त्रुटि विवरण नहीं है। कृपया वर्णन करें कि क्या गलत है, आपको क्या त्रुटि संदेश मिलते हैं, आदि –

+0

पहली छवि पारदर्शी दिखती है, दूसरी छवि की पृष्ठभूमि - जो पारदर्शी होनी चाहिए - काला (अर्ध-पारदर्शी काला) बन जाती है। – acoder

उत्तर

8
$image1 = imagecreatefrompng('a.png'); //300 x 300 
$image2 = imagecreatefrompng('b.png'); //150 x 150 
imagecopymerge($image1, $image2, 0, 0, 75, 75, 150, 150, 50); 

इस सभी की जरूरत किया जाना चाहिए द्वारा प्रस्तावित समाधान का परिणाम है। $ image1 को मर्ज किए गए चित्र को रखना चाहिए जहां image2 को 50% अस्पष्टता के साथ ओवरले किया गया है। अंतिम तर्क विलय प्रति का अल्फा है।

http://php.net/manual/en/function.imagecopymerge.php

+0

आपके सुझाव के अनुसार मैंने imagecopymerge ($ image1, $ image2, 0, 0, 0, 0, 150, 150, 50) का उपयोग किया; मैंने परिणाम विवरण में परिणाम छवि पोस्ट की। – acoder

+0

@acoder PHP का कौन सा संस्करण आप उपयोग कर रहे हैं? – dqhendricks

+0

क्या आप छवि 1 और छवि 2 दोनों पर http://www.php.net/manual/en/function.imageistruecolor.php चला सकते हैं यह सत्यापित करने के लिए कि वे सही रंग छवियों के रूप में लोड हैं? – dqhendricks

0
$merged_image = imagecreatetruecolor(300, 300); 
imagealphablending($merged_image, false); 
imagesavealpha($merged_image, true); 

imagecopy($merged_image, $image1, 0, 0, 0, 0, 300, 300); 
// after first time of "imagecopy" change "imagealphablending" 
imagealphablending($merged_image, **true**); 

imagecopy($merged_image, $image2, 0, 0, 0, 0, 300, 300); 
संबंधित मुद्दे