Главная страница
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.011 c
3-1258970968
denis_7
2009-11-23 13:09
2011.05.22
Проблема с отчетами в Rave


2-1297242329
И. Павел
2011-02-09 12:05
2011.05.22
EOleException появляется, а программа продолжает выполнение


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


2-1297684583
Den
2011-02-14 14:56
2011.05.22
Уменьшить размер памяти занимаемой приложением


2-1297715273
Чайник
2011-02-14 23:27
2011.05.22
Настройка Д2010