Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Графика и игры
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 28.11.2010, 14:29
yevda yevda вне форума
Прохожий
 
Регистрация: 28.11.2010
Сообщения: 1
Репутация: 10
По умолчанию Корректное сохранение изображения из BLOB поля в файл

День добрый! Просветите новичка в 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). Я подозреваю, что упускаю какие-то свойства изображений, но не понимаю, какие. Заранее спасибо и прошу прощения за, возможно, глупые вопросы или за повтор темы.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 16:36.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025