Форум: "Начинающим";
Текущий архив: 2008.10.12;
Скачать: [xml.tar.bz2];
ВнизВыгрузка картинки из поля 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;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.058 c