Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2011.05.22;
Скачать: CL | DM;

Вниз

Ошибка "JPEG error #41"   Найти похожие ветки 

 
leonidus   (2008-06-03 12:22) [0]

Читаю из базы BLOB-поле содержащее JPEG, но он там зашифрован немного, точнее куски файла переставлены местами. Процедура выглядит так:

var
Stream,Stream_:tStream;
JPG:TJPEGImage;

buffer:array[1..1000] of char;
buffer_:array[1..500000] of char;
MS:TMemoryStream;
begin

Stream:=ADODataSet1.CreateBlobStream(ADODataSet1.FieldByName("picture"), bmRead);

MS:=TMemoryStream.Create;

if Stream.Size>0 then
begin
 JPG:=TJPEGImage.Create;

 //получаем два куска, на 1000 байт и остальную часть
 Stream.Seek(0,soFromBeginning);
 Stream.ReadBuffer(buffer,1000);
 Stream.Seek(1000,soFromBeginning);
 Stream.ReadBuffer(buffer_,Stream.Size-1000);

 //переставляем их местами
 MS.Write(buffer_,Stream.Size-1000);
 MS.Write(buffer,1000);

 try
  JPG.LoadFromStream(MS);
  ms.Free;
  Image1.Picture.Assign(JPG);
 finally
  JPG.Free;
  Stream.Free;
 end;
end;

после выполнения этого кода, на строчке Image1.Picture.Assign(JPG); получаю ошибку JPEG error #41. Я бы все понял возможно ошибка в расшифровке, но если написать:

//переставляем их местами
 MS.Write(buffer_,Stream.Size-3000);
 MS.Write(buffer,3000);
 ms.SaveToFile("d:\1.jpg");

то полученный файл d:\1.jpg отлично открывается через ACDSee, да и принудительно в TImage я его загрузить тоже могу, откуда же тогда ошибка?


 
leonidus   (2008-06-03 14:39) [1]

Ошибка, надо так:

//переставляем их местами
MS.Write(buffer_,Stream.Size-1000);
MS.Write(buffer,1000);
ms.SaveToFile("d:\1.jpg");



Страницы: 1 вся ветка

Текущий архив: 2011.05.22;
Скачать: CL | DM;

Наверх




Память: 0.46 MB
Время: 0.009 c
15-1297115854
картман
2011-02-08 00:57
2011.05.22
запрос несуществующей странички


15-1296814094
Медвежонок ХМЛ
2011-02-04 13:08
2011.05.22
Наверное это тоже смешно


15-1296854977
Юрий
2011-02-05 00:29
2011.05.22
С днем рождения ! 5 февраля 2011 суббота


2-1297232556
SKIPtr
2011-02-09 09:22
2011.05.22
переключение между TEdit


3-1259253952
Qwerg_ntgl
2009-11-26 19:45
2011.05.22
еще LIKE и Delphi