Добрый день. Есть необходимость конвертации картинок разных форматов в ЖПЕГ, но желательно в TMemoryStream, чтоб все было в ОЗУ
для начала
Код:
PicStream:TMemoryStream;
....
PicStream.LoadFromFile(FullPath1+PicNameStr);
TypeOfPic:=KindOfImage(PicStream.Memory); (*функция возвращает число соответсвующее типу загруженного с Жд файла, все работает*)
if TypeOfPic = 4 then
begin
ShowMessage('PNG');
Png2Jpeg(PicStream); (*вызов процедуры где и должна быть конвертация*)
end;
PicStream.Position := 0; (*загрузка в ИМИДЖ картинки только ЖПЕГ из потока после трансформации, тут все работает, если ЖПЕГ то вывод в норме*)
JPG:= TJpegImage.Create;
try
JPG.LoadFromStream(PicStream);
ImgConv.Picture.Graphic:=JPG;
finally
FreeAndNil(JPG);
end;
....
procedure Png2Jpeg(aPicStream:TMemoryStream);
var JPG:TJpegImage; PNG:TPngImage; BMP:TBitmap;
begin
JPG:=TJpegImage.Create;
PNG:=TPngImage.Create;
BMP:=TBitmap.Create;
try
aPicStream.Position:=0;
PNG.LoadFromStream(aPicStream);
//BMP.Assign(PNG);
//JPG.Assign(BMP);
JPG.Assign(PNG);
JPG.SaveToStream(aPicStream);
finally
FreeAndNil(JPG);
FreeAndNil(PNG);
FreeAndNil(BMP);
end;
end;
идет ошибка 53, что значит отсутствие ЖПЕГ при выводе в ИМИДЖ результатов конвертации
Вопрос :
- вообще везде используют только загрузку выгрузку в файл, не поток, может из за этого
- что не учтено?
- может в ХЕ3 что то по другому чем с Д7, откуда все примеры