1

小さな親指を MySQL データベースに保存しています。PHP を使用して、画像からサムネイルを作成し、それを BLOB 列に格納するだけです。

MySQL はバイナリ イメージを Base64 文字列としてデータベースに保存しているようです。問題は、MySQL がそれをファイルではapplication/octet-streamなくとして保存しているように見えることです。jpg

このコードでBase64文字列をテストしたので、私はそれを知っています:

<?php
$encoded_string = "....";
$imgdata = base64_decode($encoded_string);

$f = finfo_open();

$mime_type = finfo_buffer($f, $imgdata, FILEINFO_MIME_TYPE);

echo $mime_type;
?>

MySQL は自動的に画像を Base64 文字列に変換しますか? もしそうなら、それをJPGとして保存することを確認する方法はありますか?


親指をファイルシステムに保存する方が良いことは知っていますが、残念ながらそうではなく、ファイルシステムに保存するための答えを探していません。として保存されている理由を知りたいですocted stream

WideImage次のように、親指を作成するために使用しています。

        $thumb = \WideImage::load ( $filepath )
                            ->resize(117, 88)
                            ->crop ( 'center', 'center', 117, 88 )
                            ->asString('jpg');

変数$thumbには、有効なバイナリ データが含まれています。私はそれを印刷することができ、見栄えが良いだけでなくfwrite、良いJPGを書くことができるからです.

次に、INSERT クエリを使用してデータベースに保存します。しかし、もう一度 SELECT すると、octed streamフォーマットが返されます。

4

2 に答える 2