2010-01-25 12 views
7

के साथ PHP जीडी टेक्स्ट ठीक है तो मुझे आंशिक रूप से पारदर्शी छवि पर अपना टेक्स्ट डालने में समस्या हो रही है। मैं पाठ को ठोस बनाना चाहता हूं, लेकिन मैं छवि की पृष्ठभूमि का हिस्सा पारदर्शी होने का हिस्सा चाहता हूं, और जिस हिस्से में पाठ ठोस हो गया है, जो मेरे पास है, समस्या यह है कि पाठ में से किसी एक की पारदर्शी पृष्ठभूमि विरासत में है पिछली परतें यहां कोड है, और आउटपुट का एक उदाहरण है, और उस आउटपुट के तहत जो मैं इसे दिखाना चाहता हूं। छवि एक हल्के भूरे रंग की पृष्ठभूमि पर बिछा रही है ताकि गहरे भूरे रंग के बीच छवि के चारों ओर प्रकाश सीमा पारदर्शी हो लेकिन कुछ भी विशेष रूप से पाठ नहीं होना चाहिए। ऐसा लगता है कि यह पाठ स्वयं नहीं है बल्कि पाठ ब्लॉक की पृष्ठभूमि पारदर्शी है। जैसा कि आप देख सकते हैं बहुत वांछनीय नहीं है। कृपया मदद करें, यह एकमात्र समस्या है जिसे मैंने अपनी परियोजना को पूरा करने के लिए छोड़ा है। :)ट्रांसपेरेंसी/अल्फा पृष्ठभूमि

छवियों पोस्ट नहीं कर सकते अभी तक, (orig) उदाहरण के उत्पादन की छवि के लिए इतने heres एक लिंक और वांछित परिणाम:

enter image description here

<?php 

$img = imagecreatetruecolor(200, 50); 

$imageX = imagesx($img); 
$imageY = imagesy($img); 

imagealphablending($img, false); 
imagesavealpha($img, true); 

$transparent = imagecolorallocatealpha($img, 255,255,255, 127); 
$white = imagecolorallocate($img, 255,255,255); 
$grey = imagecolorallocate($img, 127,127,127); 
imagefilledrectangle($img, 0, 0, $imageX, $imageY, $grey); 
imagefilledrectangle($img, 2, 2, $imageX-4, $imageY-4, $transparent); 

$font = "./arialbd.ttf"; 
$fontSize = 12; 
$text = "THIS IS A TEST"; 

$textDim = imagettfbbox($fontSize, 0, $font, $text); 
$textX = $textDim[2] - $textDim[0]; 
$textY = $textDim[7] - $textDim[1]; 

$text_posX = ($imageX/2) - ($textX/2); 
$text_posY = ($imageY/2) - ($textY/2); 

imagefilledrectangle($img, 10, 10, $imageX-10, $imageY-10, $grey); 
imagettftext($img, $fontSize, 0, $text_posX, $text_posY, $white, $font, $text); 

header("Content-Type: image/png"); 
imagepng($img); 

?> 

उत्तर

19

हां मुझे लगता है मैं नहीं सोचा था उस पर काफी मुश्किल है। समाधान छवि पर पाठ डालने से पहले वापस छवियों को बदलने के लिए था।

<?php 

$img = imagecreatetruecolor(200, 50); 

$imageX = imagesx($img); 
$imageY = imagesy($img); 

imagealphablending($img, false); 
imagesavealpha($img, true); 

$transparent = imagecolorallocatealpha($img, 255,255,255, 127); 
$white = imagecolorallocate($img, 255,255,255); 
$grey = imagecolorallocate($img, 127,127,127); 
imagefilledrectangle($img, 0, 0, $imageX, $imageY, $grey); 
imagefilledrectangle($img, 2, 2, $imageX-4, $imageY-4, $transparent); 

$font = "./arialbd.ttf"; 
$fontSize = 12; 
$text = "THIS IS A TEST"; 

$textDim = imagettfbbox($fontSize, 0, $font, $text); 
$textX = $textDim[2] - $textDim[0]; 
$textY = $textDim[7] - $textDim[1]; 

$text_posX = ($imageX/2) - ($textX/2); 
$text_posY = ($imageY/2) - ($textY/2); 

imagefilledrectangle($img, 10, 10, $imageX-10, $imageY-10, $grey); 
imagealphablending($img, true); 
imagettftext($img, $fontSize, 0, $text_posX, $text_posY, $white, $font, $text); 

header("Content-Type: image/png"); 
imagepng($img); 

?> 
+0

असल में मुझे एक ही समस्या है, और एक आकर्षण की तरह पाठ कार्यों को जोड़ने से पहले अलंकृत करना! धन्यवाद! – ikhsan

+0

हां, मुझे इसे 'imagecopyresampled()' के साथ आकार देने से पहले इसे बंद करना पड़ा और पृष्ठभूमि पारदर्शी रखने के लिए टेक्स्ट को 'imagettftext()' के साथ टेक्स्ट डालने से पहले वापस चालू करना और वर्णों के चारों ओर ग्रे rhombuses से बचने के लिए – vladkras

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