画像をそのURLからbase64に変換したい。
データURLを作成しますか?その場合、MIMEタイプとその他の追加情報が必要です( Wikipedia を参照)。そうでない場合、これは画像の単純なbase64表現になります。
_$b64image = base64_encode(file_get_contents('path/to/image.png'));
_
関連ドキュメント: base64_encode()
- function 、 file_get_contents()
- function 。
私は同じような解決策を探すためにこの質問に行きました、実際、私はこれが元の質問であることを理解しました。
私も同じようにしたかったのですが、ファイルはリモートサーバーにあったので、次のようにしました。
$url = 'http://yoursite.com/image.jpg';
$image = file_get_contents($url);
if ($image !== false){
return 'data:image/jpg;base64,'.base64_encode($image);
}
したがって、このコードは文字列を返す関数からのものであり、htmlのimgタグのsrcパラメータ内に戻り値を出力できます。テンプレートライブラリとしてsmartyを使用しています。次のようになります。
<img src="<string_returned_by_function>">
次の明示的な呼び出しに注意してください。
if ($image !== false)
ファイルのフェッチが成功した場合でも、file_get_contentsが0を返し、場合によってはfalseにキャストされる可能性があるため、これが必要です。実際にはこの場合は発生しませんが、ファイルのコンテンツを取得する場合は良い方法です。
これを試してください:-
例1:-
<?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'); ?>"/>
例2:
$path= 'myfolder/myimage.png';
$type = pathinfo($path, PATHINFO_EXTENSION);
$data = file_get_contents($path);
$base64 = 'data:image/' . $type . ';base64,' . base64_encode($data);
わかりませんが、この例を確認してください http://www.php.net/manual/es/function.base64-encode.php#99842
よろしく!