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

Вниз

Выгрузка картинки из поля MSSQL в jpg файл   Найти похожие ветки 

 
mefodiy   (2008-08-29 10:48) [0]

В MSSQL есть BLOB поле под названием "Picture". Нужно получить и сохранить его в виде JPEG файла.
Делаю так:

(FieldByName("Picture") as TBlobField).SaveToFile("c:\1.jpg");

Файл нормально создается, но не открывается ни одним просмотрщиком картинок. Вероятно, файл создается с "неправильной" структурой.
В чем тут может быть дело?
Спасибо.


 
DVM ©   (2008-08-29 10:50) [1]


> В чем тут может быть дело?

в том что он уже в базе лежит в неправильном формате


 
Vlad Oshin ©   (2008-08-29 11:02) [2]

так что-нибудь показывает?
Image1.Picture.Bitmap.Assign(TBLOBField(Table1.Fields[1]));


 
Ega23 ©   (2008-08-29 11:07) [3]


> Вероятно, файл создается с "неправильной" структурой.
> В чем тут может быть дело?


Из базы выгружаешь правильно. Значит там лежит некорректный jpeg. Или вообще не jpeg.


 
Плохиш ©   (2008-08-29 11:12) [4]


> mefodiy   (29.08.08 10:48)  
> В MSSQL есть BLOB поле под названием "Picture". Нужно получить
> и сохранить его в виде JPEG файла.

Хм, оригинально, какой-нибуть ворд-документ в виде jpeg файла :-))


 
Ega23 ©   (2008-08-29 11:16) [5]

автор, какие первые 4 байта в c:\1.jpg?


 
mefodiy   (2008-08-29 12:54) [6]

Дополнительная информация

Вообще-то это БД от 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 13:00) [7]


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 13:12) [8]

>JPEG error #53 - Insufficient Memory
Как лечить?


 
stas ©   (2008-08-29 13:25) [9]

mefodiy   (29.08.08 12:54) [6]
Рисунок у них в базе может хранится как угодно, допустим bmp сжатый раром или зипом.


 
Vlad Oshin ©   (2008-08-29 13:25) [10]

а если

загрузить(средствами delphi )
заранее читаемую(средствами delphi ) картинку и
выгрузить(средствами delphi )

, читается?


 
mefodiy   (2008-08-29 14:02) [11]

>а если
>загрузить(средствами delphi )
>заранее читаемую(средствами delphi ) картинку и
>выгрузить(средствами delphi )
>, читается?

 MyPicture.LoadFromFile("...");
 MyPicture.SaveToFile("...");

Все нормально читается


 
Плохиш ©   (2008-08-29 14:15) [12]


> mefodiy   (29.08.08 14:02) [11]
> Все нормально читается

А теперь попробуй выгрузить их с помощью

> Вообще-то это БД от Navision. В самом Navision есть возможность
> выгружать картинки командами
> Picture.EXPORT("c:\1.jpg");
> Picture.EXPORT("c:\1.bmp");

А потом долго подумай...


 
Anatoly Podgoretsky ©   (2008-08-29 15:13) [13]

Значит надо делать средствами Navision, видимо хранится не в чистом, а в своем формате, при экспорте преобразовывается в нужный.

И где первые четыре байта файла?


 
mefodiy   (2008-08-29 15:42) [14]

>Значит надо делать средствами Navision, видимо хранится не в чистом, а в >своем формате, при экспорте преобразовывается в нужный.

База данных Navision построена на MSSQL и тип поля там BLOLB.
К сожалению, это надо делать именно средствами Дельфи.
Как могу посмотреть первые 4 байта?


 
Vlad Oshin ©   (2008-08-29 15:44) [15]


> Как могу посмотреть первые 4 байта?

hex редактор


 
Ega23 ©   (2008-08-29 15:47) [16]


> Как могу посмотреть первые 4 байта?


stream.readBuff


 
stas ©   (2008-08-29 15:48) [17]

>mefodiy   (29.08.08 15:42) [14]
В BLOB хранится может все что угодно
stas ©   (29.08.08 13:25) [9]


 
Anatoly Podgoretsky ©   (2008-08-29 16:31) [18]

После "(FieldByName("Picture") as TBlobField).SaveToFile("c:\1.jpg");" посмотреть любым HEX редактором, результат сюда.


 
Vlad Oshin ©   (2008-08-29 16:52) [19]


> Рисунок у них в базе может хранится как угодно, допустим
> bmp сжатый раром или зипом

кстати, да. Не понятно зачем, но может.
Может его сохранить как zip и натравить архиватор?
zip - просто, архиваторы теперь умные, сами попробуют определить что это.


 
mefodiy   (2008-08-29 19:46) [20]

Первые четыре байта:
01 44 7C 5A


 
Amoeba ©   (2008-08-29 22:01) [21]


> mefodiy   (29.08.08 19:46) [20]
>
> Первые четыре байта:
> 01 44 7C 5A
>

Это х.з., но только не JPEG: FFD8FFE1


 
Ega23 ©   (2008-08-31 14:19) [22]


> Первые четыре байта:
> 01 44 7C 5A
>


Это не jpeg. Вообще непонятно, что это такое.



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

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

Наверх




Память: 0.52 MB
Время: 0.017 c
15-1219565619
Kostafey
2008-08-24 12:13
2008.10.12
С днем рождения ! 24 августа


2-1220268091
workbench
2008-09-01 15:21
2008.10.12
Запрет закрытия консольного окна


2-1220825872
Point
2008-09-08 02:17
2008.10.12
Запрос sql


15-1219226478
silver222
2008-08-20 14:01
2008.10.12
Вывод фотографий


15-1219221670
начинающий
2008-08-20 12:41
2008.10.12
Лазерник не печатает