Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как узнать информацию о файле? 
:(
    Опции темы
DOOMSoft
Дата 29.9.2005, 15:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 25.9.2005

Репутация: нет
Всего: нет



Как узнать информацию о файле? Если это фотка то дата съемки и тд. если mp3 то название песни, альбом, исполнитель???
PM MAIL   Вверх
Rennigth
Дата 29.9.2005, 17:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1708
Регистрация: 21.6.2004
Где: Moscow

Репутация: 8
Всего: 76



Ну для фотографии дата съемки это наверное все-таки дата создания файла, а остальное(кстати что именно) зависит от формата, что за формат - то.
PS: ну нету у меня цифровика smile

Для mp3 ID3V1 Tag это последние 128 байт файла, ID3V2 немного хитрее, находиться в начале файла.
Вот код для извлечения Tag-а из mp3. Код паршивый писал года 3-4-ре назад но насколько помню работал, переписывать в падлу smile

Код

Procedure GetMp3Tag(Filename:string;var tagrec:ttagrec;var tagbool:boolean); // TTagRec = array [0..11] of string;
const
  MAXBytes = (High(integer) - $F) div sizeof(byte);
type
  TByteArray = array[0..MAXBytes] of byte;
  PByteArray = ^TByteArray;
  Tconstmas = array [0..11,0..3] of byte;
const
  ID3v1: array[0..2]of byte  =(84,65,71);  //54, 41, 47
  ID3v2: array[0..2]of byte  =(73,68,51);   // 49, 44, 33
  EndID3:array[0..1]of byte  =(255,251);
  Constlist:Tconstmas=(
  (84,69,78,67),(87,88,88,88),(84,67,79,80),
  (84,79,80,69),(84,67,79,77),(84,67,79,78),
  (84,82,67,75),(67,79,77,77),(84,89,69,82),
  (84,65,76,66),(84,80,69,49),(84,73,84,50));
  {Encodedby,URL,Copyrigth,
  Origartist,Composer,Genre,
  Track,Comment,Year,
  Album,Artist,Title}
var
  Buf : PByteArray;
  FileLength,FileHandle,i,j,k,nseek,lengthConst,SizeBuf: Integer;
  z:byte;
  bool:boolean;
  mas1:array [0..63] of byte;
begin
  for i:=0 to 11 do
    tagrec[i]:='';
  tagbool:=true;
  FileHandle := FileOpen(Filename,2);

  //ID3v1
  FileLength := FileSeek(FileHandle,0,2);
  FileSeek(FileHandle,filelength-128,0);
  FileRead(FileHandle,mas1,64);
  bool:=true;
  for i:=0 to 2 do
    if mas1[i]<>ID3v1[i] then bool:=false;
  if bool=true then begin
    for i:=0 to 29 do begin
      TagRec[11]:=tagrec[11]+chr(mas1[i+3]);  //title
      TagRec[10]:=tagrec[10]+chr(mas1[i+33]); //artist
    end;
  end else begin
// Проверка на ID3v2
    SizeBuf:=3;
    GetMem(Buf, SizeBuf*sizeof(byte));
    FileSeek(FileHandle,0,0);
    FileRead(FileHandle,Buf^,3);
    bool:=true;
    for i:=0 to 2 do
      if Buf^[i]<>ID3v2[i] then bool:=false;
    FreeMem(Buf, SizeBuf*sizeof(byte));
    if bool=true then begin
// поиск конкретного значения (сравнение с ConstList)
      for z:=10 to 11 do begin
        SizeBuf:=8;
        GetMem(Buf, SizeBuf*sizeof(byte));
        nseek:=10;
        repeat
          FileSeek(FileHandle,nseek,0);
          FileRead(FileHandle,Buf^,8);
          bool:=true;
          for j:=0 to 3 do
            if buf^[j]<>constlist[z,j] then bool:=false;
          if bool=false then nseek:=nseek+10+(buf^[7]);
        until bool=true or((buf^[4]=255)and(buf^[5]=251));
        lengthConst:=buf^[7]-1;
        FreeMem(Buf, SizeBuf*sizeof(byte));
// чтение записи
        SizeBuf:=lengthConst;
        GetMem(Buf,SizeBuf*sizeof(byte));
        FileSeek(FileHandle,nseek+11,0);
        FileRead(FileHandle,Buf^,SizeBuf);
        for k:=0 to SizeBuf do
          TagRec[z]:=tagrec[z]+chr(buf^[k]);
        FreeMem(Buf, SizeBuf*sizeof(byte));
      end;
    end else
      tagbool:=false;
  end;
  FileClose(FileHandle);
end;



Это сообщение отредактировал(а) Rennigth - 29.9.2005, 17:42


--------------------
(* Honesta mors turpi vita potior *)
PM MAIL ICQ   Вверх
z-END
Дата 29.9.2005, 17:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прафесар™
****


Профиль
Группа: Комодератор
Сообщений: 3014
Регистрация: 13.3.2003
Где: Венья, Пиетари

Репутация: 1
Всего: 102



Цитата(Rennigth @ 29.9.2005, 18:33)
Ну для фотографии дата съемки это наверное все-таки дата создания файла

свосем не обязательно... нужно смотреть EXIF (метаданные JPEG) я чесно говоря незнаю как это делается, но данные эти не являются комерческой тайной и найти их при желании непроблеммаsmile)


--------------------
Каждый чилавек пасвоему праф...а памоему НЕТ! 

PM WWW ICQ   Вверх
DOOMSoft
Дата 29.9.2005, 22:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 25.9.2005

Репутация: нет
Всего: нет



Дата создания не совпадает с датой съемки.

Цитата(Rennigth @ 29.9.2005, 17:33)
Ну для фотографии дата съемки это наверное все-таки дата создания файла, а остальное(кстати что именно) зависит от формата, что за формат - то.


Фотки в формате JPEG... (а что бывают другие?)
Оттуда нужно достать только дату и время, ну еще и ширину с высотой.
PM MAIL   Вверх
z-END
Дата 30.9.2005, 09:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прафесар™
****


Профиль
Группа: Комодератор
Сообщений: 3014
Регистрация: 13.3.2003
Где: Венья, Пиетари

Репутация: 1
Всего: 102



Цитата(DOOMSoft @ 29.9.2005, 23:45)
Фотки в формате JPEG... (а что бывают другие?)

более профессиональные модели снимают в TIFF или RAW


--------------------
Каждый чилавек пасвоему праф...а памоему НЕТ! 

PM WWW ICQ   Вверх
Romikgy
Дата 30.9.2005, 13:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 13
Всего: 146



Мало вероятно , что бы джепег цифровиков писал такую инфу в файлы (о своем создании) smile


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
_hunter
Дата 30.9.2005, 13:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 9
Всего: 98



пишет он...
IPTC info зовется...
а вот как читать -- хз. нужно формат JPEG смотреть...


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Romikgy
Дата 30.9.2005, 14:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 13
Всего: 146



Извеняюсь тогда smile
Можно посмотреть здесь:
http://multipart-mixed.com/photo/iptc.html
если знаешь перл smile
или у ирфанвью есть длл которая читает это, наверное можно ее поюзать.


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
z-END
Дата 30.9.2005, 14:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прафесар™
****


Профиль
Группа: Комодератор
Сообщений: 3014
Регистрация: 13.3.2003
Где: Венья, Пиетари

Репутация: 1
Всего: 102



Цитата(_hunter @ 30.9.2005, 14:33)
пишет он...
IPTC info зовется...

имхо ты несовсем прав... эти данные пиуштся в EXIF а IPTC исползуется для "дополнительных данных", ну или их меня перводчик хреновыйsmile
Цитата

IPTC information details
Originally designed to allow press photographers to provide information concerning images they sent back to the home office, IPTC fields can be used to store supplemental information about an image. IPTC information differs from EXIF information in that EXIF information is generated by the digital camera and contains information about various camera settings. IPTC fields can be used to “annotate” images with a great deal of information.



--------------------
Каждый чилавек пасвоему праф...а памоему НЕТ! 

PM WWW ICQ   Вверх
Romikgy
Дата 30.9.2005, 16:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 13
Всего: 146



Может поможет ( прикольно звучит) :
http://www.watermarker.com/exif-iptc-gps/
http://www.dalbum.org/index.php?go=ExifLine
http://home.pacbell.net/michal_k/exif_v.html
Добавлено @ 16:03
http://www.reneris.com/tools/ExifCopyUsage.asp
Точно должна помочь smile


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: WinAPI и системное программирование"
Snowybartram
MetalFanbems
PoseidonRrader
Riply

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Delphi обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • 99% ответов по WinAPI можно найти в MSDN Library, оставшиеся 1% здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема »


 




[ Время генерации скрипта: 0.0542 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.