データベース データに基づいて画像を組み合わせて作成した画像があり、それを base 64 に変換する方法を考えていました。これを試しましたが、返された文字を画像にデコードできません。
$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="..." />
。
// 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));