簡體   English   中英

PHP將文件中生成的圖像轉換為base64

[英]PHP convert an image made in the file into base64

我有一個通過基於數據庫數據組合圖像而創建的圖像,並且想將硬件將其轉換為base64。我嘗試了此操作,但是返回的字符無法解碼為圖像:

$encode ="data:image/png"; 
imagepng($image);
echo (base64_encode($encode));

我看到了這一點 ,但這需要一條我沒有的道路。 謝謝你的幫助。

以下內容將使您無需創建臨時文件即可獲取圖像數據(在有太多用戶在線之前,我曾做過帶有臨時文件的噩夢...)

ob_start(function($c) {return "data:image/png;base64,".base64_encode($c);});
imagepng($image);
ob_end_flush();

這將輸出類似於:

data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQAgMAAABinRfyAAAAAXNSR0IArs4c6QAAAAxQTFRFAGVygICA/8wz/+aZTn6FEAAAAAF0Uk5TAEDm2GYAAAABYktHRACIBR1IAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH2wkZEwoSgxq4wwAAAB1pVFh0Q29tbWVudAAAAAAAQ3JlYXRlZCB3aXRoIEdJTVBkLmUHAAAAS0lEQVQI1w3EMQ3AMAwEwMdTEmWRSF68h0RQBIKl5vkUirdGX99wuKUPKkjJkfM4jueE+ivo7VW6wDCCq1VtEdtiIMY2BGlgwUU+P38ZK+RwskeQAAAAAElFTkSuQmCC

適合在<img src="..." />

對於PHP <5.3,沒有匿名功能的編輯:

// Define the function first
function ob_base64_encode($c) {
  return "data:image/png;base64,".base64_encode($c);
}
// And pass its name as a string
ob_start('ob_base64_encode');
imagepng($image);
ob_end_flush();

您正在編碼字符串“ data:image / png”-自然地您將無法將其解碼為圖像。 假設$image包含有效的圖像數據,您應該能夠簡單地執行

imagepng($image, $temp_file_name);
base64_encode(file_get_contents($temp_file_name));

從手冊中獲取: http : //php.net/manual/zh/function.base64-encode.php#105200

/**
 * Returns base64 encoded string prepended by "data:image/"
 *
 * @param $filename string
 * @param $filetype string 
 * @return string
 */
 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);
    }
}

luke的功能代碼,位於lukeoliff.com。

我的功能評論。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM