एक छवि को6464 एन्कोडिंग में कैसे बदलें?


290

क्या आप कृपया मुझे मार्गदर्शन कर सकते हैं कि मैं URL से बेस 64 एनकोडिंग में एक छवि कैसे बदल सकता हूं?


3
आप इसके लिए क्या करना चाहते हैं?
पेका

7
इसे Img टैग की src विशेषता में एम्बेड करने के लिए
Volatil3

5
यह एक पुराना धागा है, लेकिन पूर्णता के लिए: यह css में उपयोग के लिए, विशेष रूप से छोटे (1k के तहत) छवियों को एनकोड करने के लिए बहुत मायने रखता है। इस तरह आप एक अनुरोध को बचाते हैं, जो अधिक समय लगेगा और ओवरहेड के कारण और भी बड़ा हो सकता है।
अरमिनारूस

जवाबों:


573

मुझे लगता है कि यह होना चाहिए:

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

10
यह इस बात पर निर्भर करता है कि आपको किस चीज के लिए छवि की आवश्यकता है। यदि यह इनलाइन URL के रूप में है, तो यह जाने का तरीका है। हालांकि यह मात्र बेस 64 एनकोडिंग के साथ समान नहीं है।
पक्के

बहुत बढ़िया टिप, अब मैं फाइल अपलोड को संपादित करने के लिए एक फंक्शन बनाऊंगा, या एक वापस ले जाऊँगा_uploaded_file (), धन्यवाद
Vinicius De Jesus

121

आसान:

$imagedata = file_get_contents("/path/to/image.jpg");
             // alternatively specify an URL, if PHP settings allow
$base64 = base64_encode($imagedata);

ध्यान रखें कि इससे डेटा 33% बढ़ जाएगा, और आपको उन फ़ाइलों के साथ समस्या होगी, जिनका आकार आपके आकार से अधिक है memory_limit


1
@ यह करता है! बेस 64 एनकोडिंग आमतौर पर ऐसा करेगी।
पेका

38

बेस 64 एनकोड फॉर्मेट में इमेज को दर्शाने के लिए इस तरह का भी उपयोग करें ... PHP फ़ंक्शन file_get_contentऔर फ़ंक्शन का उपयोग करने के लिए अगला ढूंढेंbase64_encode

और के रूप में तैयार करने के लिए परिणाम मिलता है data:" . file_mime_type . " base64_encoded string। इसका उपयोग img src विशेषता में करें। निम्नलिखित कोड देखें मैं आपके लिए मदद कर सकता हूं।

// A few settings
$img_file = 'raju.jpg';

// Read image path, convert to base64 encoding
$imgData = base64_encode(file_get_contents($img_file));

// Format the image SRC:  data:{mime};base64,{data};
$src = 'data: '.mime_content_type($img_file).';base64,'.$imgData;

// Echo out a sample image
echo '<img src="'.$src.'">';

1
यदि फ़ंक्शन खोजने में विफल रहा तो mime_content_type, svpal से php.net/manual/en/function.mime-content-type.php
mario ruiz

15

बस मामले में आप (जो भी कारण के लिए) curlऔर न ही उपयोग करने में असमर्थ हैं file_get_contents, आप काम कर सकते हैं:

$img = imagecreatefrompng('...');
ob_start();
imagepng($img);
$bin = ob_get_clean();
$b64 = base64_encode($bin);

10
<img src="data:image/png;base64,<?php echo base64_encode(file_get_contents("IMAGE URL HERE")) ?>">

मैं इस संसाधन का उपयोग करने की कोशिश कर रहा था, लेकिन एक त्रुटि मिलती रही, मुझे लगा कि ऊपर दिया गया कोड पूरी तरह से काम कर रहा है।

बस अपनी छवि के URL के साथ IMAGE URL HERE को प्रतिस्थापित करें - http://www.website.com/image.jpg


6

बहुत सरल और आमतौर पर इस्तेमाल किया जा सकता है:

function getDataURI($imagePath) {
    $finfo = new finfo(FILEINFO_MIME_TYPE);
    $type = $finfo->file($imagePath);
    return 'data:'.$type.';base64,'.base64_encode(file_get_contents($imagePath));
}

//Use the above function like below:
echo '<img src="'.getDataURI('./images/my-file.svg').'" alt="">';
echo '<img src="'.getDataURI('./images/my-file.png').'" alt="">';

नोट: फ़ाइल का माइम-प्रकार अपने आप जुड़ जाएगा (इस PHP दस्तावेज़ से मदद लेना )।


3

यहाँ अपलोड के लिए कोड को एनकोड करना है और इसे MySQL में सेव करना है

if (!isset($_GET["getfile"])) {
    if ($_FILES["file"]["error"] > 0) {
        echo "Error: " . $_FILES["file"]["error"] . "<br>";
    } else {
        move_uploaded_file($_FILES["file"]["tmp_name"], $_FILES["file"]["name"]);

        $bin_string = file_get_contents($_FILES["file"]["name"]);
        $hex_string = base64_encode($bin_string);
        $mysqli = mysqli_init();

        if (!$mysqli->real_connect('localhost', 'root', '', 'arihant')) {
            die('Connect Error (' . mysqli_connect_errno() . ') ' . mysqli_connect_error());
        }

        $mysqli->query("INSERT INTO upload(image) VALUES ('" . $hex_string . "')");
    }
}

छवि दिखाने के लिए इसका उपयोग करें

echo "<img src='data:image/jpeg;base64, $image' width=300>";

10
यह नहीं पूछा गया था।
एलेक्सियोवे

1

यहाँ एक उदाहरण है एक कॉल कॉल का उपयोग .. यह file_get_contents () फ़ंक्शन से बेहतर है । बेशक, base64_encode () का उपयोग करें

$url = "http://example.com";

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$output = curl_exec($ch);
curl_close($ch);
?>

<img src="data:image/png;base64,<?php echo base64_encode($output);?>">  

1
curlfile_get_contentsजब तक आपको कॉल पूर्व में अतिरिक्त डेटा जोड़ने की आवश्यकता नहीं है , तब तक "बेहतर" नहीं है । प्रमाणीकरण। इसके अलावा, file_get_contentsजब संभव हो तो एक स्थानीय फ़ाइल की सामग्री प्राप्त करने के लिए कमबैक करना है, इस प्रकार एक बेकार नेटवर्क कॉल नहीं करना है।
हिसवर्ड

1

आप इसे कर्ल के माध्यम से भी कर सकते हैं, बस आपको एक छवि फ़ाइल के लिए एक पथ की आवश्यकता है और इसे नीचे दिए गए फ़ंक्शन में पास करें ..

public static function getImageDataFromUrl($url)
{
    $urlParts = pathinfo($url);
    $extension = $urlParts['extension'];
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    $response = curl_exec($ch);
    curl_close($ch);
    $base64 = 'data:image/' . $extension . ';base64,' . base64_encode($response);
    return $base64;

}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.