2012-07-27 14 views
5

मुझे पता है कि यह बार-बार कवर किया गया है लेकिन मैं अलग-अलग स्क्रिप्ट्स को कोशिश करता हूं और मेरे पास संशोधित करता हूं, और मैं अभी भी मेरे पीएनजी -24 वॉटरमार्क.png को नहीं प्राप्त कर सकता मेरी मूल छवि के शीर्ष पर पारदर्शी।PHP - वॉटरमार्क पीएनजी पारदर्शिता/अल्फा

यही तो मैं वर्तमान में है:

<? 

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

$watermark = imagecreatefrompng('watermark.png'); 
$watermark_width = imagesx($watermark); 
$watermark_height = imagesy($watermark); 

$image = imagecreatefromjpeg($imageURL); 
$image = imagecreatetruecolor($watermark_width, $watermark_height); 
$size = getimagesize($imageURL); 

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

$dest_x = $size[0] - $watermark_width - 5; 
$dest_y = $size[1] - $watermark_height - 5; 

imagecopymerge($image, $watermark, $dest_x, $dest_y, 0, 0, $watermark_width, $watermark_height, 100); 

imagejpeg($image); 

imagedestroy($image); 
imagedestroy($watermark); 

?> 

मैं सिर्फ एक और तो सवाल पढ़ा है और जवाब में से एक सलाह दी है कि यह पारदर्शी अगर आप इन दो पंक्तियों में शामिल न करें नहीं होगा:

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

मैंने उन्हें जोड़ा और अभी भी नहीं। मैंने हेडर और आउटपुट को पीएनजी में सेट करने की कोशिश की लेकिन अभी भी कोई भाग्य नहीं है। मैंने अपने ब्राउज़र (कच्चे) में वॉटरमार्क लोड किया और यह निश्चित रूप से पारदर्शी है लेकिन छवि पर नहीं। निश्चित रूप से यह मुश्किल नहीं हो सकता है? कोई विचार क्या मैं गलत कर रहा हूँ?

उत्तर

14

यह एप्लिकेशन कोड के साथ कोई समस्या नहीं है, यह वॉटरमार्क छवि (पीएनजी) के साथ ही है।

बहुत सारे वॉटरमार्क उदाहरण/ट्यूटोरियल एक पीएनजी -24 वॉटरमार्क का उपयोग करने के लिए कहते हैं, लेकिन एक ब्लॉग के अनुसार मैंने अभी पढ़ा है, वे कहते हैं कि imagecopymerge पीएनजी -24 फाइलों से बहुत अच्छी तरह से निपटता नहीं है, इसलिए, पीएनजी का उपयोग करें -8 और कुछ विशेष 'वेब के लिए सहेजें' सेटिंग्स। मैंने यह किया और यह ठीक काम करता है।

  • पीएनजी-8 (अनुशंसित)
    रंग:

    वॉटरमार्क छवि निम्नलिखित की सिफारिश की स्वरूपों में से एक में होना चाहिए:

    यहाँ this blog से पीएनजी प्रकार के बारे में प्रासंगिक अनुभाग है : 256 या उससे कम
    पारदर्शिता: चालू/बंद

  • जीआईएफ
    रंग: 256 या उससे कम
    पारदर्शिता: चालू/बंद
  • जेपीईजी
    रंग: यह सच है रंग
    पारदर्शिता: 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% 

और के अन्य लाभों के लिए:

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

<? 
$masterURL = 'mydomain.com/myImage.jpg'; 

header('content-type: image/jpeg'); 
$watermark = imagecreatefrompng('watermark.png'); 
$watermark_width = imagesx($watermark); 
$watermark_height = imagesy($watermark); 
$image = imagecreatetruecolor($watermark_width, $watermark_height); 
$image = imagecreatefromjpeg($masterURL); 
$size = getimagesize($masterURL); 
$dest_x = $size[0] - $watermark_width - 5; 
$dest_y = $size[1] - $watermark_height - 5; 
imagecopymerge($image, $watermark, $dest_x, $dest_y, 0, 0, $watermark_width, $watermark_height, 100); 
imagejpeg($image); 
imagedestroy($image); 
imagedestroy($watermark); 
?> 

थोड़ा और बाद में एक ही लेख पर विज्ञापन (this comment), मुझे पता चला कि आप पीएनजी -24 वॉटरमार्क का उपयोग कर सकते हैं लेकिन के साथ imagecopymerge के बजाय।वॉटरमार्क फ़ाइल के रूप में छोटे है, वॉटरमार्किंग 'ऑन-द-फ्लाई' के लिए काफी अच्छा है

imagecopy($image, $watermark, $dest_x, $dest_y, 0, 0, $watermark_width, $watermark_height); 

पीएनजी -8 वॉटरमार्क के साथ imagecopymerge का उपयोग करना: यह एक साथ

imagecopymerge($image, $watermark, $dest_x, $dest_y, 0, 0, $watermark_width, $watermark_height, 100); 

: आप इस लाइन की जगह ले सकता । यदि आप वॉटरमार्किंग 'पीछे के दृश्य' करते हैं, तो यह वास्तव में फ़ाइल आकार के बारे में कोई फर्क नहीं पड़ता है और आप imagecopy का उपयोग करके पीएनजी -24 वॉटरमार्क से बेहतर गुणवत्ता प्राप्त कर सकते हैं।

मुझे आशा है कि इससे भ्रमित वॉटरमार्कर्स को वहां मदद मिलेगी।

+1

कृपया टेक्स्ट के स्क्रीनशॉट शामिल न करें। – meagar

+2

@ मीगर: क्यों? अगर यह आपको बहुत परेशान करता है, तो इसे दोबारा लिखें! – TheCarver

+5

मैंने किया, लेकिन मुझे नहीं करना चाहिए था। स्क्रीनशॉट पाठ मत करो। यह वेब के लिए बुरा है, साइट के लिए बुरा है, और इसके उपयोगकर्ताओं के लिए बुरा है। – meagar

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