Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.05.2011, 11:07   #1
Lifefine
Пользователь
 
Регистрация: 03.10.2008
Сообщений: 93
По умолчанию Фотография + Delphi

Всем привет! Искал здесь и в гугле не нашел подобную тему, вопрос такой, каким образом можно узнать данные о фотографии,например, открыть на форму фотографию и при нажатии кнопки появились данные о фотографии (Модель фотоаппарата, диафрагма и т.д.), с какими компонентами работать, или можно ссылочку где описывается как реализовать такой алгоритм, сам разберусь.

Отобразить данные типа так:


Заранее большое спасибо!
Lifefine вне форума Ответить с цитированием
Старый 16.05.2011, 11:24   #2
SERG1980
Участник клуба
 
Аватар для SERG1980
 
Регистрация: 28.03.2007
Сообщений: 1,814
По умолчанию

Скорее всего это ваш фотоаппарат такое делет. При создании фото он в свободное место файла в так называемые теги (примерно как в mp3), пишет инфу, а утилитка эта просто знает какой байт файла за что отвечает и показывет вам это. Вам надо загнать эту фотку в поток и анализировать побайтно и методом тыка подбирать какой байт за что отвечает.
Хотя может и не так, я всего лишь так предполагаю?
SERG1980 вне форума Ответить с цитированием
Старый 16.05.2011, 21:37   #3
Lifefine
Пользователь
 
Регистрация: 03.10.2008
Сообщений: 93
По умолчанию

Понял,спасибо за информацию! А вот по поводу "...загнать эту фотку в поток...", каким образом можно загнать? Хотя я в потоках разбирался только в обычных примерах, а вот фотку загнать в поток пока не соображаю((((, есть ли примеры для работы с таким потоками как с файлами mp3? Будьте добры,если есть ссылки на данную тему скиньте, заранее большое спасибо.
Lifefine вне форума Ответить с цитированием
Старый 16.05.2011, 22:16   #4
chertovich
Форумчанин
 
Аватар для chertovich
 
Регистрация: 26.07.2009
Сообщений: 489
По умолчанию

Фотография, это файл, и поэтому его "загонять" в поток нужно точно также, как и др. файл.
На счет данных о фотографии, то нужно искать где в файле хранится эта инфа, и потом уже считывать

Вот почитай:
http://ru.wikipedia.org/wiki/JPG
Если в глубине души вы программист, то, следуя своим наклонностям, вы захотите написать кусок кода.

Последний раз редактировалось chertovich; 16.05.2011 в 22:22.
chertovich вне форума Ответить с цитированием
Старый 16.05.2011, 22:20   #5
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Описание JPEG формата:
http://ru.wikipedia.org/wiki/JPEG а тут подробнее http://www.martinreddy.net/gfx/2d/JPEG.txt
Человек_Борща вне форума Ответить с цитированием
Старый 17.05.2011, 00:43   #6
Lifefine
Пользователь
 
Регистрация: 03.10.2008
Сообщений: 93
По умолчанию

Спасибо всем за инфу! Поработаю над потоками. Хотел заранее узнать, после как "загоню" в поток, считывание информации о данных фотограф. необходимо в байтах, как написано на википедии? ИМХО.
Lifefine вне форума Ответить с цитированием
Старый 17.05.2011, 01:00   #7
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Ну например вот так:
Код потока:
Код:
unit Unit2;

interface

uses
  Classes,SysUtils,jpeg,Windows;

type
  TJpegReader = class(TThread)
  private
    { Private declarations }
    fFileName:string;
  protected
    procedure Execute; override;
    property ImgFile:string write fFileName;
  end;

implementation

{ Important: Methods and properties of objects in visual components can only be
  used in a method called using Synchronize, for example,

      Synchronize(UpdateCaption);

  and UpdateCaption could look like,

    procedure TJpegReader.UpdateCaption;
    begin
      Form1.Caption := 'Updated in a thread';
    end; }

{ TJpegReader }

procedure TJpegReader.Execute;
var
  jpg:TJPEGImage;
begin
  jpg:=TJPEGImage.Create;
  try
  jpg.LoadFromFile(fFileName);
  {Ту что-то делаем с jpeg файлом}
  finally
   FreeAndNil(jpg);
  end;
end;

end.
код использоввания:
Код:
uses Unit2;

...

procedure Run;
var
  Thr:TJpegReader;
begin
  Thr:=TjepegReader.create(True);
  Thr.ImgFile:=OpenDlg.FileName;
  Thr.Resume;
end;
Потоки нужны только в ом случае если требуется обработать многг информации или длительную операцию при этом не тормозить осн. программу.

хм как подсказки чтобы вам много не кодить, в delphi есть модуль JPEG который работает с jpeg изображениями.

Так же советую прощерстить ресурс http://torry.com там уверен вы найдете много компонентов/модулей на интересующую вас тему.
Человек_Борща вне форума Ответить с цитированием
Старый 17.05.2011, 08:10   #8
SERG1980
Участник клуба
 
Аватар для SERG1980
 
Регистрация: 28.03.2007
Сообщений: 1,814
По умолчанию

Под фразой "загнать в поток" я имел ввиду открыть фотку через MemoryStream например
Код:
var MS:TMEmoryStream;
.....
MS:=TMemoryStream.Create;
MS.LoadFromFile('путь к фото');
MS.Seek(0,0);//сдвигаем вначало
//далее считываем побайтно и "раскидываем" данные о фотоаппарате в том случае если вы знаете какой байт 
за что отвечает, в противном случае методом тыка, подбора
FreeAndNil(MS);
SERG1980 вне форума Ответить с цитированием
Старый 17.05.2011, 08:28   #9
Sparkman
220400
Форумчанин
 
Аватар для Sparkman
 
Регистрация: 21.05.2010
Сообщений: 726
По умолчанию

1) загрузка фото Image1.Picture.LoadFromFile('путь') ;
2) информация о файле (сводка): ищем и читаем все об EXIF.

ПС: можно было бы и поподробнее написать, только, даже на этом форуме, подобная тема столько раз поднималась...
Cерьёзной помощи не ждите - помогаю в перерывах на "перекур".
Не существует ничего невозможного для человека, который не собирается ничего делать сам.
Не учите человека, если вы не его учитель.
Sparkman вне форума Ответить с цитированием
Старый 17.05.2011, 14:12   #10
ZvEr_HaCkEr
VisualC++/DirectX
Форумчанин
 
Аватар для ZvEr_HaCkEr
 
Регистрация: 16.07.2010
Сообщений: 831
По умолчанию

[offtop]. А почему torry.com не рабит?[/offtop]
ZvEr_HaCkEr вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не изменяется интерфейс моей программы при переходе с Delphi 7 на Delphi 2010 Elvisnya Общие вопросы Delphi 3 28.04.2011 15:59
Фотография рабочего дня. Stilet Свободное общение 75 10.10.2010 11:28
Rad Studio 2011 XE: новое в Delphi, C++ Builder, RadPHP и Delphi Prism savva-paladin Софт 18 02.10.2010 20:24
Как открыть БД, написанную в Delphi если нf другой машине Delphi нет? dagarik БД в Delphi 7 22.10.2007 17:54