私はTStreamとして関数に受け取った画像を操作しようとしています。 私はそれをメモリからロードし、ファイルへの書き込みを避けたいと思います。次のように私が行う機能でOpenIL(DevIL):DelphiのilLoadLを使用
imgLump: Array of TILubyte;
:この時
// setting input image into a "lump"
SetLength(imgLump, inImage.Size);
// rewind stream to beginning
inImage.Seek(0, soBeginning);
// read stream and write into array
inImage.Read(imgLump[0], inImage.Size);
loaded := ilLoadL(IL_JPG, imgLump, Length(imgLump));
のように宣言 "しこり" 変数
inImage: TStream;
:として宣言
入力変数ステージ、ロードされた値0(IL_FALSE
)、ilGetError()を呼び出すと1298(IL_FILE_READ_ERROR
)が返されます。
なぜですか?私は何を取りこぼしたか?
ステップ1:ファイルにストリームを書くとしようと問題が解決しない場合は、これを試して
loaded := ilLoadL(IL_JPG, @imgLump[0], Length(imgLump));
:
おかげで、 宜蘭
間違いなく。しかし、おそらく@imgLump [0]。 –
配列が連続ブロックであるため、これら2つの間に違いはありません。そのため、このアサーションは有効です:@array = @array [Low(array)]、つまり、両方のポインタがメモリ内の同じアドレスを指しています。 –
私は疑いがありましたが、分解を確認しました。それは間違いなく同じです:) –