![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Выгрузка картинки из поля MSSQL в jpg файл [D7, XP]
mefodiy © (2008-08-29 10:48:00)В MSSQL есть BLOB поле под названием 'Picture'. Нужно получить и сохранить его в виде JPEG файла.
Делаю так:
(FieldByName('Picture') as TBlobField).SaveToFile('c:\1.jpg');
Файл нормально создается, но не открывается ни одним просмотрщиком картинок. Вероятно, файл создается с "неправильной" структурой.
В чем тут может быть дело?
Спасибо.
Ega23 (2008-08-31 14:19:00) [1]
> Первые четыре байта:
> 01 44 7C 5A
>
Это не jpeg. Вообще непонятно, что это такое.
Amoeba (2008-08-29 22:01:00) [2]
> mefodiy (29.08.08 19:46) [20]
>
> Первые четыре байта:
> 01 44 7C 5A
>
Это х.з., но только не JPEG: FFD8FFE1
mefodiy (2008-08-29 19:46:00) [3]Первые четыре байта:
01 44 7C 5A
Vlad Oshin (2008-08-29 16:52:00) [4]
> Рисунок у них в базе может хранится как угодно, допустим
> bmp сжатый раром или зипом
кстати, да. Не понятно зачем, но может.
Может его сохранить как zip и натравить архиватор?
zip - просто, архиваторы теперь умные, сами попробуют определить что это.
Anatoly Podgoretsky (2008-08-29 16:31:00) [5]После "(FieldByName('Picture') as TBlobField).SaveToFile('c:\1.jpg');" посмотреть любым HEX редактором, результат сюда.
stas (2008-08-29 15:48:00) [6]>mefodiy (29.08.08 15:42) [14]
В BLOB хранится может все что угодно
stas © (29.08.08 13:25) [9]
Ega23 (2008-08-29 15:47:00) [7]
> Как могу посмотреть первые 4 байта?
stream.readBuff
Vlad Oshin (2008-08-29 15:44:00) [8]
> Как могу посмотреть первые 4 байта?
hex редактор
mefodiy (2008-08-29 15:42:00) [9]>Значит надо делать средствами Navision, видимо хранится не в чистом, а в >своем формате, при экспорте преобразовывается в нужный.
База данных Navision построена на MSSQL и тип поля там BLOLB.
К сожалению, это надо делать именно средствами Дельфи.
Как могу посмотреть первые 4 байта?
Anatoly Podgoretsky (2008-08-29 15:13:00) [10]Значит надо делать средствами Navision, видимо хранится не в чистом, а в своем формате, при экспорте преобразовывается в нужный.
И где первые четыре байта файла?
Плохиш (2008-08-29 14:15:00) [11]
> mefodiy (29.08.08 14:02) [11]
> Все нормально читается
А теперь попробуй выгрузить их с помощью
> Вообще-то это БД от Navision. В самом Navision есть возможность
> выгружать картинки командами
> Picture.EXPORT('c:\1.jpg');
> Picture.EXPORT('c:\1.bmp');
А потом долго подумай...
mefodiy (2008-08-29 14:02:00) [12]>а если
>загрузить(средствами delphi )
>заранее читаемую(средствами delphi ) картинку и
>выгрузить(средствами delphi )
>, читается?
MyPicture.LoadFromFile('...');
MyPicture.SaveToFile('...');
Все нормально читается
Vlad Oshin (2008-08-29 13:25:00) [13]а если
загрузить(средствами delphi )
заранее читаемую(средствами delphi ) картинку и
выгрузить(средствами delphi )
, читается?
stas (2008-08-29 13:25:00) [14]mefodiy (29.08.08 12:54) [6]
Рисунок у них в базе может хранится как угодно, допустим bmp сжатый раром или зипом.
mefodiy (2008-08-29 13:12:00) [15]>JPEG error #53 - Insufficient Memory
Как лечить?
Ega23 (2008-08-29 13:00:00) [16]
JPEG error #36 - Output File Error - Possibly out of disk space
JPEG error #51 - Quantization table not defined
JPEG error #52 - File is not a JPEG file
JPEG error #53 - Insufficient Memory
JPEG error #60 - Incomplete File
JPEG error #67 - Incomplete File
mefodiy (2008-08-29 12:54:00) [17]Дополнительная информация
Вообще-то это БД от Navision. В самом Navision есть возможность выгружать картинки командами
Picture.EXPORT('c:\1.jpg');
Picture.EXPORT('c:\1.bmp');
И тот, и другой формат после выгрузки нормально просматривается всеми известными программами. Но в Delphi, если через TImage bmp загружается и просматриватся нормально, то jpg дает ошибку "JPEG error #53".
В то же время
1. (FieldByName('Picture') as TBlobField).SaveToFile('c:\1.jpg');
при выполнении ошибки не дает, но созданный файл при загрузке в TImage дает ту же ошибку "JPEG error #53".
2. Команда
Image1.Picture.Bitmap.Assign(TBLOBField(FieldByName('Picture')));
при выполнении дает ошибку:
"Bimap image is not valid"
Ega23 (2008-08-29 11:16:00) [18]автор, какие первые 4 байта в c:\1.jpg?
Плохиш (2008-08-29 11:12:00) [19]
> mefodiy (29.08.08 10:48)
> В MSSQL есть BLOB полепод названием 'Picture'. Нужно получить
> и сохранить его в виде JPEG файла.
Хм, оригинально, какой-нибуть ворд-документ в виде jpeg файла :-))
Ega23 (2008-08-29 11:07:00) [20]
> Вероятно, файл создается с "неправильной" структурой.
> В чем тут может быть дело?
Из базы выгружаешь правильно. Значит там лежит некорректный jpeg. Или вообще не jpeg.