ストリームが切り捨てられると、JPEGエラー42が報告されます。たとえば、長さがゼロのファイルをTJPEGImage
にロードしようとした場合 その場合、エラー42が最終結果になります。
一部の画像が表示されますが、すべてではない場合、最も可能性の高い説明は、データがDBへの往復を何らかの形で行っていないことです。
書き出すときは、BLOBフィールドのサイズを確認してください。ディスクファイルに書き込むときに、ファイルのサイズと一致することを確認してください。ディスクファイルが有効なJPEGであることを確認してください。次に、BLOBフィールドを再読み込みするときに、BLOBフィールドの長さがまったく同じであることを確認します。おそらく、DBコードに問題があり、ストリームが切り捨てられています。
したがって、ここでの最初のステップは、最初にDBに入力したものとまったく同じデータを回復できることを確認することです。
私が持っている他の唯一の考えは、画像コントロールのグラフィックが常にJPEGであるとは限らないということです。画像の読み込みに使用するコードImage1.Picture.Graphic.LoadFromStream()
データがJPEGであると想定しています。 JPEG以外のものを保存した場合は、LoadFromStream()
失敗するでしょう。