<?xml version='1.0' encoding="utf-8"?>
      <rss version='2.0'>
      <channel>
      <title>Форум на Исходниках.RU</title>
      <link>https://forum.sources.ru</link>
      <description>Форум на Исходниках.RU</description>
      <generator>Форум на Исходниках.RU</generator>
  	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=201839&amp;view=findpost&amp;p=1687070</guid>
        <pubDate>Thu, 06 Sep 2007 05:15:35 +0000</pubDate>
        <title>как извлечь информацию из файла  TIFF JPEG etc</title>
        <link>https://forum.sources.ru/index.php?showtopic=201839&amp;view=findpost&amp;p=1687070</link>
        <description><![CDATA[Rouse_: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=201839&view=findpost&p=1684900'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>к.б.н. &#064; <time class="tag-quote__quoted-time" datetime="2007-09-04T11:21:38+04:00">04.09.07, 07:21</time></span><div class='quote '>Мне нужно получать свойства (автор, ключевые слова) из не compound файлов (в частности TIFF, JPEG). </div></div><br>
<br>
Вот тебе пример. Снимает то, что тебе нужно и немного еще (из дополнительных свойств нет времени писать демку полного разбора)<br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">uses</div><div class="code_line">&nbsp;&nbsp;GDIPOBJ,</div><div class="code_line">&nbsp;&nbsp;GDIPAPI,</div><div class="code_line">&nbsp;&nbsp;GDIPUTIL,</div><div class="code_line">&nbsp;&nbsp;ActiveX;</div><div class="code_line">&nbsp;</div><div class="code_line">{$R *.dfm}</div><div class="code_line">&nbsp;</div><div class="code_line">procedure TForm1.Button1Click(Sender: TObject);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;function GetAdvTagData(const ID: Integer): String;</div><div class="code_line">&nbsp;&nbsp;const</div><div class="code_line">&nbsp;&nbsp; &nbsp;TAG_Title &nbsp; &nbsp; = 40091;</div><div class="code_line">&nbsp;&nbsp; &nbsp;TAG_Comments &nbsp;= 40092;</div><div class="code_line">&nbsp;&nbsp; &nbsp;TAG_Author &nbsp; &nbsp;= 40093;</div><div class="code_line">&nbsp;&nbsp; &nbsp;TAG_KeyWords &nbsp;= 40094;</div><div class="code_line">&nbsp;&nbsp; &nbsp;TAG_Subject &nbsp; = 40095;</div><div class="code_line">&nbsp;&nbsp;begin</div><div class="code_line">&nbsp;&nbsp; &nbsp;case ID of</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;TAG_Title: &nbsp; &nbsp;Result := &#39;Title&#39;;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;TAG_Comments: Result := &#39;Comments&#39;;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;TAG_Author: &nbsp; Result := &#39;Author&#39;;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;TAG_KeyWords: Result := &#39;KeyWords&#39;;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;TAG_Subject: &nbsp;Result := &#39;Subject&#39;;</div><div class="code_line">&nbsp;&nbsp; &nbsp;else</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;Result := &#39;&#39;;</div><div class="code_line">&nbsp;&nbsp; &nbsp;end;</div><div class="code_line">&nbsp;&nbsp;end;</div><div class="code_line">&nbsp;</div><div class="code_line">var</div><div class="code_line">&nbsp;&nbsp;GDIImage: TGPImage;</div><div class="code_line">&nbsp;&nbsp;I, ACount, PropSize: Integer;</div><div class="code_line">&nbsp;&nbsp;PropertyesList: array of TPropId;</div><div class="code_line">&nbsp;&nbsp;PropertyItem: PPropertyItem;</div><div class="code_line">&nbsp;&nbsp;PropName: String;</div><div class="code_line">&nbsp;&nbsp;PropValue: WideString;</div><div class="code_line">&nbsp;&nbsp;ByteValue: DWORD;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;if OpenDialog1.Execute then</div><div class="code_line">&nbsp;&nbsp;begin</div><div class="code_line">&nbsp;&nbsp; &nbsp;Memo1.Clear;</div><div class="code_line">&nbsp;&nbsp; &nbsp;GDIImage := TGPImage.Create(OpenDialog1.FileName);</div><div class="code_line">&nbsp;&nbsp; &nbsp;try</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;ACount := GDIImage.GetPropertyCount;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;SetLength(PropertyesList, ACount);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;GDIImage.GetPropertyIdList(ACount, @PropertyesList[0]);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;for I := 0 to ACount - 1 do</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;begin</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;PropSize := GDIImage.GetPropertyItemSize(PropertyesList[I]);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;GetMem(PropertyItem, PropSize);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;try</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;GDIImage.GetPropertyItem(PropertyesList[I], PropSize, PropertyItem);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;PropName := GetAdvTagData(PropertyesList[I]);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if PropName &#60;&#62; &#39;&#39; then</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;begin</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SetLength(PropValue, PropertyItem^.length);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Move(PropertyItem^.value^, PropValue[1], PropertyItem^.length);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;end</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;begin</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;PropName := GetMetaDataIDString(PropertyItem^.id);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ByteValue := 0;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if PropertyItem^.type_ in</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;[PropertyTagTypeByte, PropertyTagTypeShort,</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; PropertyTagTypeLong] then</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;begin</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if PropertyItem^.length &#60;= 4 then</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;begin</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Move(PropertyItem^.value^, ByteValue, PropertyItem^.length);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;PropValue := IntToStr(ByteValue);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;end</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;else</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;begin</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SetLength(PropValue, PropertyItem^.length);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Move(PropertyItem^.value^, PropValue[1], PropertyItem^.length);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;end;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;end;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;end;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Memo1.Lines.Add(PropName + &#39; - &#39; + PropValue);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;finally</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;FreeMem(PropertyItem);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;end;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;end;</div><div class="code_line">&nbsp;&nbsp; &nbsp;finally</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;GDIImage.Free;</div><div class="code_line">&nbsp;&nbsp; &nbsp;end;</div><div class="code_line">&nbsp;&nbsp;end;</div><div class="code_line">end;</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script>]]></description>
        <author>Rouse_</author>
        <category>Работа с файлами, форматы файлов и данных</category>
      </item>
	
      </channel>
      </rss>
	