IMHO.WS

IMHO.WS (http://www.imho.ws/index.php)
-   Программирование (http://www.imho.ws/forumdisplay.php?f=40)
-   -   получить свойства графического файла (http://www.imho.ws/showthread.php?t=93663)

Nand 04.10.2005 15:34

получить свойства графического файла
 
Необходимо получить свойства графического файла (jpeg, png, gif). В windows они находятся: свойства-сводка-дополнительно {ширина; высота}. Возможно ли это сделать с помощью WSH? :help:

/7y3uK 04.10.2005 17:15

без понятия про шелл, но программно можно - только у каждого графического файла эта инфа в разных смещениях лежит... надо спецификацию читать...
А где получить то надо? откуда и куда?

crazydown 04.10.2005 18:08

читай документацию по интересующему тебя формату графического файла, обычно вся информация о ширине, высоте, etc... находится в заголовке файла

Nand 04.10.2005 18:51

Не хочется сильно усложнять задачу "читай документацию ". Рыл в сторону WSH objFile.???? не могу найти имя свойства объекта (если такое существует?)

ЕЖ 04.10.2005 19:33

Ну можно написать что-то типа
Цитата:

Set p = LoadPicture("pic.jpg")
WScript.Echo p.Width
Только выдаваемая через p.Width и p.Height ширина/высота должна преобразовываться в соотвествии с разрешением экрана.

Nand 04.10.2005 20:10

Цитата:

Сообщение от ЕЖ
Ну можно написать что-то типа
Только выдаваемая через p.Width и p.Height ширина/высота должна преобразовываться в соотвествии с разрешением экрана.

Как должна преобразовываться w/h ? при размерах изображения 1024х768 выдает 27093 и 20320?
Если сменить разрешение экрана, то все одно выдает эти же значения.
Делитель получается 26,458 ?

Если windows видит эти размеры (в свойствах) то наверное из нее их как то можно достать?

ЕЖ 05.10.2005 13:04

Я немного не правильно выразился. Зависимость не от разрешения экрана, а от dpi выставленного видеорежима.

Ширина/высота картинки возвращается в так называемых хайметриках (HiMetric), где 1 Hm = 1/1000 см. Как известно 1 дюйм (inch) = приблизительно 2.54 см = 2540 Hm. Стандартно видеорежим выставлен в 96 dpi (вне зависимости от разрешения).

Тогда получается что формула преобразования в пикселы будет
Цитата:

w = p.Width/2540*96
Может потребоваться округление до целого, но это зависит только от точности преобразования дюймов в сантиметры (2.54...).

Конечно может показаться что это всё какие-то извраты, но не забывай что система в принципе разрабатывалась и ориентировалась не на простую работу с изображениями, а ещё и для печати на бумаге, а оттуда и следуют все эти полиграфические заморочки.

Вообще на VB для этого есть функции типа ScaleX(p.Width, vbHimetric, vbPixels), но не знаю, будут ли они работать в WSH.

npoka3a 05.10.2005 19:02

а можно не циклица на "голом" WSH, а найти КОМ объект, который может то что надо.

Nand 06.10.2005 18:53

Цитата:

npoka3a:
не циклица на "голом" WSH
- это замечание конкретизирует мой вопрос!!
Можно ли это сделать на php, perl - (задача для решается web) тоже скока не искал в талмудах....

Цитата:

ЕЖ:
Зависимость не от разрешения экрана, а от dpi
А можно ссылку - где про это можно почитать?

в windows ф-ция StgOpenStorageEx - может кто нибудь дать пример?

npoka3a 07.10.2005 12:52

http://www.php.net/manual/ru/ref.image.php
imagesx -- Get image width
imagesy -- Get image height

getimagesize

(PHP 3, PHP 4 , PHP 5)
getimagesize -- Get the size of an image
Description
array getimagesize ( string filename [, array &imageinfo] )



The getimagesize() function will determine the size of any GIF, JPG, PNG, SWF, SWC, PSD, TIFF, BMP, IFF, JP2, JPX, JB2, JPC, XBM, or WBMP image file and return the dimensions along with the file type and a height/width text string to be used inside a normal HTML IMG tag.

If accessing the filename image is impossible, or if it isn't a valid picture, getimagesize() will return FALSE and generate an error of level E_WARNING.

Замечание: Support for JPC, JP2, JPX, JB2, XBM, and WBMP became available in PHP 4.3.2. Support for SWC exists as of PHP 4.3.0 and TIFF support was added in PHP 4.2.0

Замечание: JPEG 2000 support was added in PHP 4.3.2. Note that JPC and JP2 are capable of having components with different bit depths. In this case, the value for "bits" is the highest bit depth encountered. Also, JP2 files may contain multiple JPEG 2000 codestreams. In this case, getimagesize() returns the values for the first codestream it encounters in the root of the file.

Замечание: The getimagesize() function does not require the GD image library.

Returns an array with 4 elements. Index 0 contains the width of the image in pixels. Index 1 contains the height. Index 2 is a flag indicating the type of the image: 1 = GIF, 2 = JPG, 3 = PNG, 4 = SWF, 5 = PSD, 6 = BMP, 7 = TIFF(intel byte order), 8 = TIFF(motorola byte order), 9 = JPC, 10 = JP2, 11 = JPX, 12 = JB2, 13 = SWC, 14 = IFF, 15 = WBMP, 16 = XBM. These values correspond to the IMAGETYPE constants that were added in PHP 4.3.0. Index 3 is a text string with the correct height="yyy" width="xxx" string that can be used directly in an IMG tag.

Пример 1. getimagesize (file)
<?php
list($width, $height, $type, $attr) = getimagesize("img/flag.jpg");
echo "<img src=\"img/flag.jpg\" $attr alt=\"getimagesize() example\" />";
?>

URL support was added in PHP 4.0.5

Пример 2. getimagesize (URL)
<?php
$size = getimagesize("http://www.example.com/gifs/logo.gif");

// if the file name has space in it, encode it properly
$size = getimagesize("http://www.example.com/gifs/lo%20go.gif");

?>


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

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.