これでマップされたDoctrineを使用して画像をデータベースに保存しています:
/** @Column(type="blob") **/
protected $data;
すべて問題ないようです。次の方法で、画像データをデータベースに永続化できます。
$largeImage = new ImageData();
$handle = fopen($imagePath, "r");
$bytes = fread($handle, filesize($imagePath));
$largeImage->setData(base64_encode($bytes));
fclose($handle);
$entityManager->persist($largeImage);
$entityManager->flush();
わかった。データは保存されますが、読み取る必要があるときに読み取れません。
var_dump($image->getData());
// outputs resource(1) of type (stream)
だから、私はこれを試しました:
$fp = fopen('image.jpg', 'w');
fwrite($fp, base64_decode(stream_get_contents($image->getData())));
fclose($fp);
また、ファイルの内容は画像からのものではないため、画像は Windows フォト ビューアーによってレンダリングされません。