<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; VBScript: работа с графическими файлами]]></title>
	<link rel="self" href="http://forum.script-coding.com/extern.php?action=feed&amp;tid=2846&amp;type=atom" />
	<updated>2010-02-19T14:20:06Z</updated>
	<generator>PunBB</generator>
	<id>http://forum.script-coding.com/viewtopic.php?id=2846</id>
		<entry>
			<title type="html"><![CDATA[Re: VBScript: работа с графическими файлами]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=33177#p33177" />
			<content type="html"><![CDATA[<p>Связанная тема: <a href="http://forum.script-coding.com/viewtopic.php?id=4195">JScript: Распознавание текста в TIF файлах средствами MS Office</a>.</p>]]></content>
			<author>
				<name><![CDATA[alexii]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=1844</uri>
			</author>
			<updated>2010-02-19T14:20:06Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=33177#p33177</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBScript: работа с графическими файлами]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=30089#p30089" />
			<content type="html"><![CDATA[<p>Примеры работы с библиотекой <a href="http://www.xnview.com/en/download_gfl.html">GFLAx</a>:</p><p>* <a href="http://forum.script-coding.com/viewtopic.php?id=2381">WSH: разбиение/склейка изображений</a>;<br />* <a href="http://forum.script-coding.com/viewtopic.php?id=2510">VBScript: вывод текста поверх обоев Рабочего стола</a>.</p>]]></content>
			<author>
				<name><![CDATA[alexii]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=1844</uri>
			</author>
			<updated>2009-11-04T00:49:51Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=30089#p30089</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBScript: работа с графическими файлами]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=30088#p30088" />
			<content type="html"><![CDATA[<p><strong>Обработка графического файла посредством компонента WIA</strong></p><p>Описание: <a href="http://msdn.microsoft.com/en-us/library/ms630827(VS.85).aspx">Windows Image Acquisition Automation Layer</a>.<br />Ссылка на загрузку библиотеки «Windows Image Acquisition Library v2.0» и SDK: <a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;FamilyID=a332a77a-01b8-4de6-91c2-b7ea32537e29#filelist">Download details: Windows® Image Acquisition Automation Library v2.0 Tool: Image acquisition and manipulation component for VB and scripting</a> (замечание: сама библиотека изначально наличествует в Windows XP SP1+).</p><div class="codebox"><pre><code>Option Explicit

Const wiaFormatBMP = &quot;{B96B3CAB-0728-11D3-9D7B-0000F81EF32E}&quot;

Dim objImageFile, objImageFile2
Dim objImageProcess
Dim objFSO

Dim strPath2Wallpaper
Dim strPath2MyWallpaper


&#039; Исходный графический файл:
strPath2Wallpaper   = &quot;C:\WINDOWS\Web\Wallpaper\Осень.jpg&quot;
&#039; Графический файл с результатом работы:
strPath2MyWallpaper = &quot;C:\WINDOWS\Web\Wallpaper\MyWallpaper.bmp&quot;

Set objImageFile    = WScript.CreateObject(&quot;WIA.ImageFile&quot;)
Set objImageProcess = WScript.CreateObject(&quot;WIA.ImageProcess&quot;)
Set objFSO          = WScript.CreateObject(&quot;Scripting.FileSystemObject&quot;)

If Not objFSO.FileExists(strPath2Wallpaper) Then
    WScript.Quit 1
End If

With objImageFile
    &#039; Загружаем файл в компонент:
    .LoadFile strPath2Wallpaper
    
    &#039; Выводим некоторую информацию об исходном изображении
    WScript.Echo &quot;============================================================&quot;
    WScript.Echo &quot;Image [&quot; &amp; strPath2Wallpaper &amp; &quot;]&quot;
    WScript.Echo &quot;------------------------------------------------------------&quot;
    WScript.Echo &quot;Width                 :&quot;, .Width
    WScript.Echo &quot;Height                :&quot;, .Height
    WScript.Echo &quot;Depth                 :&quot;, .PixelDepth
    WScript.Echo &quot;Horizontal resolution :&quot;, .HorizontalResolution
    WScript.Echo &quot;Vertical resolution   :&quot;, .VerticalResolution
    WScript.Echo &quot;Frame(s) count        :&quot;, .FrameCount
    
    If .IsAnimated Then
        WScript.Echo &quot;Image is animated&quot;
    End If
    
    If .Properties.Exists(&quot;40091&quot;) Then
        WScript.Echo &quot;Title                 :&quot;, .Properties(&quot;40091&quot;).Value.String
    End If
    
    WScript.Echo &quot;------------------------------------------------------------&quot;
End With

&#039; Обрабатываем…
With objImageProcess
    &#039; ---------------------------------------------------------------------------
    &#039; Масштабируем:
    &#039; ---------------------------------------------------------------------------
    .Filters.Add .FilterInfos(&quot;Scale&quot;).FilterID
    
    With .Filters.Item(1).Properties
        &#039; Ширина - 1024 пикселей
        .Item(&quot;MaximumWidth&quot;)  = 1024
        &#039; Высота - 768 пикселей
        .Item(&quot;MaximumHeight&quot;) = 768
    End With
    &#039; ---------------------------------------------------------------------------
    
    &#039; ---------------------------------------------------------------------------
    &#039; Вращаем:
    &#039; ---------------------------------------------------------------------------
    .Filters.Add .FilterInfos(&quot;RotateFlip&quot;).FilterID
    &#039; Отразим зеркально по горизонтали
    .Filters.Item(2).Properties.Item(&quot;FlipHorizontal&quot;) = True
    &#039; Отразим зеркально по вертикали
    .Filters.Item(2).Properties.Item(&quot;FlipVertical&quot;)   = True
    &#039; Повернём на 270 градусов (по часовой стрелке)
    .Filters.Item(2).Properties.Item(&quot;RotationAngle&quot;)  = 270
    &#039; ---------------------------------------------------------------------------
    
    &#039; ---------------------------------------------------------------------------
    &#039; Обрезаем:
    &#039; ---------------------------------------------------------------------------
    .Filters.Add .FilterInfos(&quot;Crop&quot;).FilterID
    
    With .Filters(3).Properties
        &#039; Подрежем сверху-снизу
        .Item(&quot;Top&quot;)    = objImageFile.Width \ 4
        .Item(&quot;Bottom&quot;) = objImageFile.Width \ 4
        &#039; Подрежем справа-слева
        &#039;.Item(&quot;Left&quot;)   = objImageFile.Height \ 10
        &#039;.Item(&quot;Right&quot;)  = objImageFile.Height \ 10
    End With
    &#039; ---------------------------------------------------------------------------
    
    &#039; ---------------------------------------------------------------------------
    &#039; Наклеим другую картинку:
    &#039; ---------------------------------------------------------------------------
    .Filters.Add .FilterInfos(&quot;Stamp&quot;).FilterID
    
    &#039; Загружаем картинку в новый компонент:
    Set objImageFile2 = WScript.CreateObject(&quot;WIA.ImageFile&quot;)
    objImageFile2.LoadFile &quot;C:\WINDOWS\Web\exclam.gif&quot;
    
    With .Filters(4).Properties
        &#039; Наклеиваем картинку…
        .Item(&quot;ImageFile&quot;) = objImageFile2
        
        &#039; …в указанном месте
        .Item(&quot;Top&quot;)       = 20
        .Item(&quot;Left&quot;)      = 20
    End With
    
    Set objImageFile2 = Nothing
    &#039; ---------------------------------------------------------------------------
    
    &#039; ---------------------------------------------------------------------------
    &#039; Конвертируем:
    &#039; ---------------------------------------------------------------------------
    .Filters.Add .FilterInfos(&quot;Convert&quot;).FilterID
    &#039; В bitmap формат
    .Filters.Item(5).Properties.Item(&quot;FormatID&quot;).Value = wiaFormatBMP
    &#039; ---------------------------------------------------------------------------
    
    &#039; Применяем заданные выше фильтры:
    Set objImageFile = .Apply(objImageFile)
End With

&#039; Перезаписывать существующий файл компонент не умеет,
&#039; потому предварительно проверяем наличие файла…
If objFSO.FileExists(strPath2MyWallpaper) Then
    &#039; …и, если найден, — удаляем его
    objFSO.DeleteFile strPath2MyWallpaper
End If

&#039; Сохраняем файл:
objImageFile.SaveFile &quot;C:\WINDOWS\Web\Wallpaper\MyWallpaper.bmp&quot;

Set objFSO          = Nothing
Set objImageProcess = Nothing
Set objImageFile    = Nothing

WScript.Quit 0</code></pre></div>]]></content>
			<author>
				<name><![CDATA[alexii]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=1844</uri>
			</author>
			<updated>2009-11-04T00:49:17Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=30088#p30088</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBScript: работа с графическими файлами]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=20633#p20633" />
			<content type="html"><![CDATA[<p>Бесплатный COM-сервер <a href="http://www.jsware.net/jsware/scripts.php5#jsiptc">JPG IPTC Component</a> считывает и устанавливает 12 строковых свойств (&quot;метаданных&quot;) JPG-файлов. Дистрибутив (архив) компонента имеет размер порядка 42 Кб.</p><p>IPTC — это стандарт, установленный Newspaper Association of America (NAA) и International Press Telecommunications Council (IPTC). IPTC обеспечивает способы сохранения описательного текста внутри файлов JPG, который может быть распознан различными программами (например, IrfanView). Значения, которые может прочитать и записать компонент (первая цифра — индекс для обработки компонентом, вторая цифра — код стандарта IPTC:</p><p>0 - Title 5<br />1 - Topic [Category] 15<br />2 - Date 55<br />3 - City 90<br />4 - State/Province 95<br />5 - Country 101<br />6 - Credit 110<br />7 - Source 115<br />8 - Copyright 116<br />9 - Description [Caption] 120<br />10 - Author 122<br />11 - Keywords 25</p><p>Последний тег &quot;Keywords&quot; может содержать несколько значений, которые нужно разделять запятыми.</p><p>IPTC — не та же самая информация, которую можно увидеть в свойствах файла в Проводнике. Мало того, сохранение этой информации в Проводнике может испортить данные IPTC. С данными IPTC могут правильно работать далеко не все программы. В некоторых случаях, работая таким образом с JPG файлом поочерёдно разными программами, можно даже испортить файл. Примечание: вообще, разные программы могут по-разному работать с JPG. Например, текстовые комментарии GIMP не видны как IPTC и не видны в Проводнике.</p><p>Пример:<br /></p><div class="codebox"><pre><code>Set oJPG = CreateObject(&quot;jsIPTC.JPGEdit&quot;)
Number = oJPG.LoadJPG(&quot;c:\temp\test.jpg&quot;) &#039; вернёт -1 в случае ошибки
WScript.Echo &quot;найдено тегов: &quot; &amp; Number
For i = 0 To Number - 1
    WScript.Echo oJPG.Tag(i)
Next
&#039;For Each tag In oJPG.AllTags &#039; массив значений всех тегов, в т.ч. незаполненных
&#039;    WScript.Echo tag
&#039;Next
&#039;For Each tag In oJPG.TagList &#039; массив названий тегов
&#039;    WScript.Echo tag
&#039;Next
oJPG.Tag(0) = &quot;Заголовок&quot;
oJPG.Tag(1) = &quot;Категория&quot;
success = oJPG.SaveJPG(oJPG.CurrentFile) &#039; сохранять нужно в тот же файл</code></pre></div>]]></content>
			<author>
				<name><![CDATA[The gray Cardinal]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=2</uri>
			</author>
			<updated>2009-03-13T13:39:53Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=20633#p20633</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[VBScript: работа с графическими файлами]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=20011#p20011" />
			<content type="html"><![CDATA[<p>Бесплатный COM-сервер <a href="http://www.xstandard.com/en/documentation/ximage/">Image Size Component</a> позволяет узнать размеры (dimensions) изображений JPEG, GIF, PNG и BMP, размеры файлов в байтах, а также определить реальный формат (из перечисленных), если файл имеет неверное расширение. Компонент можно скачать <a href="http://www.xstandard.com/en/downloads/?product=image">здесь</a>, ссылка на скачивание высылается на e-mail. Размер дистрибутива (архив) — порядка 33 Кб.</p><p>Пример:<br /></p><div class="codebox"><pre><code>Set objImage = CreateObject(&quot;XStandard.Image&quot;)
objImage.Load &quot;C:\Temp\test.bmp&quot;
WScript.Echo &quot;Width: &quot; &amp; objImage.Width
WScript.Echo &quot;Height: &quot; &amp; objImage.Height
WScript.Echo &quot;Size: &quot; &amp; objImage.Size &#039; в байтах
Select Case objImage.Format
    Case 1
        strFormat = &quot;GIF&quot;
    Case 2
        strFormat = &quot;JPEG&quot;
    Case 3
        strFormat = &quot;PNG&quot;
    Case 4
        strFormat = &quot;BMP&quot;
    Case Else
        strFormat = &quot;unknown&quot;
End Select
WScript.Echo &quot;Format: &quot; &amp; strFormat</code></pre></div><p>См. также <a href="http://forum.script-coding.com/viewtopic.php?id=38">VBScript: чтение расширенных свойств файлов</a>.</p>]]></content>
			<author>
				<name><![CDATA[The gray Cardinal]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=2</uri>
			</author>
			<updated>2009-02-25T18:52:09Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=20011#p20011</id>
		</entry>
</feed>
