Главная страница
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.014 c
9-1189098446
Kav
2007-09-06 21:07
2011.05.22
glUseProgramObjectARB(0) ; жуткие тормоза


1-1245744723
dmitry_12_08_73
2009-06-23 12:12
2011.05.22
Как выделить нужный файл в открываемой папке?


1-1254994477
asails
2009-10-08 13:34
2011.05.22
Определить выделенный элемент из списка TcxComboBoxю


15-1297027776
Юрий
2011-02-07 00:29
2011.05.22
С днем рождения ! 7 февраля 2011 понедельник


2-1297442025
Token
2011-02-11 19:33
2011.05.22
TTreeView и галочки