2010-12-03 12 views

उत्तर

23

क्या आप एक डेटा यूआरएल बनाना चाहते हैं? आपको एक एमआईएमई-प्रकार और कुछ अन्य अतिरिक्त जानकारी की आवश्यकता है (Wikipedia देखें)।

$b64image = base64_encode(file_get_contents('path/to/image.png')); 

संगत डॉक्स: base64_encode()-function, file_get_contents()-function अगर ऐसा नहीं है, इस छवि का एक सरल base64 प्रतिनिधित्व होगा।

8

इस प्रयास करें: -

उदाहरण एक: -

<?php 
function base64_encode_image ($filename=string,$filetype=string) { 
    if ($filename) { 
     $imgbinary = fread(fopen($filename, "r"), filesize($filename)); 
     return 'data:image/' . $filetype . ';base64,' . base64_encode($imgbinary); 
    } 
} 
?> 

used as so 

<style type="text/css"> 
.logo { 
    background: url("<?php echo base64_encode_image ('img/logo.png','png'); ?>") no-repeat right 5px; 
} 
</style> 

or 

<img src="<?php echo base64_encode_image ('img/logo.png','png'); ?>"/> 

उदाहरण दो: -

$path= 'myfolder/myimage.png'; 
$type = pathinfo($path, PATHINFO_EXTENSION); 
$data = file_get_contents($path); 
$base64 = 'data:image/' . $type . ';base64,' . base64_encode($data); 
+0

आपका उदाहरण दो बिल्कुल वही है जो मैं ढूंढ रहा था। इसके लिए +1। –

4

मैं इस सवाल का एक समान समाधान के लिए खोज करने के लिए मिला है, वास्तव में, मैं समझा कि यह मूल सवाल था।

मैं भी ऐसा ही चाहता था, लेकिन फ़ाइल एक दूरस्थ सर्वर में था, तो यह मैं क्या किया है:

$url = 'http://yoursite.com/image.jpg'; 
$image = file_get_contents($url); 
if ($image !== false){ 
    return 'data:image/jpg;base64,'.base64_encode($image); 

} 

तो, यह कोड एक समारोह है कि एक स्ट्रिंग रिटर्न से है, और आप कर सकते हैं एचटीएमएल में एक आईएमजी टैग के src पैरामीटर के अंदर रिटर्न वैल्यू आउटपुट करें। मैं अपनी templating पुस्तकालय के रूप में smarty का उपयोग कर रहा हूँ। यह इस तरह से जा सकते हैं:

<img src="<string_returned_by_function>"> 

नोट करने के लिए स्पष्ट कॉल:

if ($image !== false) 

यह आवश्यक है क्योंकि file_get_contents 0 लौट सकते हैं और कुछ मामलों में गलत पर casted जा, भले ही फ़ाइल लाने सफल रहा था । असल में इस मामले में ऐसा नहीं होना चाहिए, लेकिन फ़ाइल सामग्री लाने के दौरान यह एक अच्छा अभ्यास है।

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