![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() День добрый! Просветите новичка в delphi. Если тема на форуме уже была, то ткните носом нерадивого чайника. Суть следующая. Есть база Firebird с табличкой с колонкой PHOTO типа blob. Там лежат изображения, фото сотрудников, знаю точно. В таблице около 1500 записей. Мне необходимо сохранить эти изображения в файлы на ЖД, каждый файл будет иметь имя из соответствующей колонки LASTNAME, т.е.получим много файлов а ля Петров.bmp, Сидоров.bmp и т.д. Я экспортирую изображения в файлы с помощью компонентов FIBPLus. Перепробовал несколько вариантов, результат один и тот же. Фото сохраняется некорректно. Если картинка ниже не отображается, то объясню на словах: изображение делится на две части по вертикали и эти части меняются местами, слева станет правая часть и за ней сразу левая часть.
![]() http://imglink.ru/show-image.php?id=...38b9a8e7f2068d Правда, это касается не всех изображений, некоторые сохраняются нормально. Более того, ВСЕ ПОЛНОСТЮ изображения отображаются КОРРЕКТНО в моем компоненте dbImage на моей форме! Кроме того, в менеджерах БД (например, EMS Manager 2008 for Firebird или Maestro) фото тоже отображаются правильно. Все! ![]() http://imglink.ru/show-image.php?id=...8b4afd7aa4b21f Ниже варианты кода, которые я использовал: А) Код:
procedure TForm1.btn1Click(Sender: TObject) ; var PStream: TMemoryStream; Im: TImage; begin PStream := TMemoryStream.Create; PStream.Position := 0; TBlobField(pfbdtst1.FieldByName('PHOTO')).SaveToStream(PStream); PStream.Position := 0; PStream.SaveToFile(pfbdtst1.FieldValue('LASTNAME', True) + '.bmp'); PStream.Free; end; B) Код:
procedure TForm1.btn1Click(Sender: TObject) ; begin dbimgPHOTO.Picture.SaveToFile(pfbdtst1.FieldValue('LASTNAME', False) + '.bmp'); end; C) Код:
procedure TForm1.btn1Click(Sender: TObject) ; begin TBlobField(pfbdtst1.FieldByName('PHOTO')).SaveToFile(pfbdtst1.FieldValue('LASTNAME', False) + '.bmp'); end; P.S: Кстати просмотрщик Windows тоже не может открыть мои сохраненные в файлы изображения, я просматриваю их только с помощью сторонних просмотрщиков (к примеру, FastStone Image Viewer). Я подозреваю, что упускаю какие-то свойства изображений, но не понимаю, какие. Заранее спасибо и прошу прощения за, возможно, глупые вопросы или за повтор темы. |