पर कनवर्ट करें ठीक है, मेरा सवाल बहुत आसान है, मैं बस बेस 64 पर imagepng
/imagejpg के आउटपुट को कनवर्ट करना चाहता हूं, मैं यह कैसे कर सकता हूं? आउटपुट बफर कैप्चर करने का सही तरीका है? धन्यवाद।जीडी आउटपुट को बेस 64
21
A
उत्तर
50
imagejpeg
/imagepng
कोई डेटा नहीं लौटाता है, वे छवि डेटा सीधे आउटपुट स्ट्रीम (या फ़ाइल में) लिखते हैं।
आप इस डेटा सबसे आसान तरीका PHPs Output Control Functions उपयोग करने के लिए है बेस 64 के रूप में एन्कोड पर कब्जा, और फिर $image_data
पर base64_encode
का उपयोग करना चाहते हैं तो।
ob_start();
imagejpeg ($img);
$image_data = ob_get_contents();
ob_end_clean();
$image_data_base64 = base64_encode ($image_data);
4
बेस 64 एन्कोडेड छवियों के लिए सबसे आम उपयोग केस HTML आउटपुट है। मैं इस मामले के लिए एक और पूरा समाधान प्रदान करना चाहता हूं। मैंने आउटपुट छवि प्रारूपों को स्विच करने की क्षमता भी जोड़ा है।
// Example
$gdImg = imagecreate(100, 100);
imagecolorallocate($gdImg, 0, 0, 0);
echo gdImgToHTML($gdImg);
imagedestroy($gdImg);
// Create an HTML Img Tag with Base64 Image Data
function gdImgToHTML($gdImg, $format='jpg') {
// Validate Format
if(in_array($format, array('jpg', 'jpeg', 'png', 'gif'))) {
ob_start();
if($format == 'jpg' || $format == 'jpeg') {
imagejpeg($gdImg);
} elseif($format == 'png') {
imagepng($gdImg);
} elseif($format == 'gif') {
imagegif($gdImg);
}
$data = ob_get_contents();
ob_end_clean();
// Check for gd errors/buffer errors
if(!empty($data)) {
$data = base64_encode($data);
// Check for base64 errors
if ($data !== false) {
// Success
return "<img src='data:image/$format;base64,$data'>";
}
}
}
// Failure
return '<img>';
}
क्या हमें 'imagedestroy ($ gdImg)' कॉल करने की आवश्यकता है या 'ob_end_clean()' हमारे लिए इसका ख्याल रखेगा? – user3442612
@ user3442612 उपयोग के बाद छवियों को मैन्युअल रूप से नष्ट करना अच्छा अभ्यास है। मुझे विश्वास नहीं है कि यह इस संक्षिप्त नमूना के लिए उपयुक्त है, लेकिन मैं इसे "सही तरीके से" करने के लिए जोड़ दूंगा। धन्यवाद। – Lachmanski