2011-12-08 18 views
8

एक पारदर्शी पृष्ठभूमि के साथ जीडीलिब के साथ एक छवि कैसे बनाएं?पारदर्शी पृष्ठभूमि के साथ एक छवि कैसे बनाएं

header('content-type: image/png'); 

$image = imagecreatetruecolor(900, 350); 

imagealphablending($image, true); 
imagesavealpha($image, true); 

$text_color = imagecolorallocate($image, 0, 51, 102); 
imagestring($image,2,4,4,'Test',$text_color); 

imagepng($image); 
imagedestroy($image); 

यहाँ पृष्ठभूमि काला है

+0

आप 'imagefill' का उपयोग करें और भरने कि आवंटित रंग (imagecolorallocatealpha) है 0. –

+0

@noice को अल्फा सेट के साथ, एक जवाब बनाने के लिए यह काम करता है .. – clarkk

+0

@NoICE: रंग का आवंटन आवश्यक नहीं है , यह एक असली रंग छवि है। – mvds

उत्तर

7

आप imagefill() का उपयोग करें और भरने कि आवंटित रंग (imagecolorallocatealpha()) अल्फा 0.

करने के लिए सेट किया है कि के रूप में @mvds कहा साथ करने के लिए है, अगर यह एक TrueColor छवि है "का आवंटन नहीं आवश्यक है", (24 या 32 बिट) यह सिर्फ एक पूर्णांक है, इसलिए आप उस पूर्णांक को imagefill() पर सीधे पास कर सकते हैं।

जब आप imagecolorallocate() पर कॉल करते हैं तो सत्य रंग छवियों के लिए पृष्ठभूमि में PHP क्या करता है - यह केवल उस गणना पूर्णांक को देता है।

21

imagestring से पहले एक पंक्ति

imagefill($image,0,0,0x7fff0000); 
कहीं

जोड़ें और यह पारदर्शी हो जाएगा।

0x7fff0000 टूट जाता है में नीचे:

alpha = 0x7f 
red = 0xff 
green = 0x00 
blue = 0x00 

पूरी तरह से पारदर्शी है।

+0

आपने मेरा दिन बनाया है :) धन्यवाद! –

8

इस तरह कुछ ...

$im = @imagecreatetruecolor(100, 25); 
# important part one 
imagesavealpha($im, true); 
imagealphablending($im, false); 
# important part two 
$white = imagecolorallocatealpha($im, 255, 255, 255, 127); 
imagefill($im, 0, 0, $white); 
# do whatever you want with transparent image 
$lime = imagecolorallocate($im, 204, 255, 51); 
imagettftext($im, $font, 0, 0, $font - 3, $lime, "captcha.ttf", $string); 
header("Content-type: image/png"); 
imagepng($im); 
imagedestroy($im); 
+0

इसने काले रंग की बजाय मेरी पारदर्शी पृष्ठभूमि को सफेद बना दिया :( – Bolas

1

कुछ समय आप PNG छवि में समस्याओं के कारण पारदर्शी छवि नहीं मिलेगा। छवि निम्नलिखित की सिफारिश की स्वरूपों में से एक में होना चाहिए:

PNG-8 (recommended) 
Colors: 256 or less 
Transparency: On/Off 
GIF 
Colors: 256 or less 
Transparency: On/Off 
JPEG 
Colors: True color 
Transparency: n/a 

imagecopymerge ठीक तरह से कार्य पीएनजी -24 छवियों को संभाल नहीं करता है; इसलिए यह सिफारिश नहीं है।

आप एडोब फोटोशॉप उपयोग कर रहे हैं वॉटरमार्क चित्र बनाने के लिए, यह अनुशंसित है कि आप का उपयोग निम्न सेटिंग के साथ आदेश "के लिए वेब सहेजें":

File Format: PNG-8, non-interlaced 
Color Reduction: Selective, 256 colors 
Dithering: Diffusion, 88% 
Transparency: On, Matte: None 
Transparency Dither: Diffusion Transparency Dither, 100% 
6

यह काम करना चाहिए:

$img = imagecreatetruecolor(900, 350); 

$color = imagecolorallocatealpha($img, 0, 0, 0, 127); //fill transparent back 
imagefill($img, 0, 0, $color); 
imagesavealpha($img, true); 
4

यह काम करना चाहिए। इसने मेरे लिए काम किया।

$thumb = imagecreatetruecolor($newwidth,$newheight); 
$transparent = imagecolorallocatealpha($thumb, 0, 0, 0, 127); 
imagefill($thumb, 0, 0, $transparent); 
imagesavealpha($thumb, true); 
imagecopyresampled($thumb, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height); 
imagepng($thumb, $output_dir); 
+0

कोड केवल उत्तर ही प्रोत्साहित नहीं किया जाता है क्योंकि वे भविष्य के पाठकों के लिए अधिक जानकारी प्रदान नहीं करते हैं, कृपया – WhatsThePoint

+0

पर लिखा गया कुछ स्पष्टीकरण प्रदान करें। समारोह 'imagesavealpha()' ने मेरा दिन बचाया। दस्तावेज़ीकरण कहता है : पीएनजी छवियों को सहेजते समय पूर्ण अल्फा चैनल जानकारी (एकल-रंग पारदर्शिता के विपरीत) को सहेजने के प्रयास में ध्वज सेट करता है। –

संबंधित मुद्दे