:: Visual Foxpro, Foxpro for DOS
функции для работы с графическими файлами
Nick S

Сообщений: 4
Дата регистрации: 01.12.2010
Добрый день!

Подскажите, плз, где можно найти готовые функции для работы с графическими файлами *.jpg, *.gif, *.png, *.bmp, *.tif ,например для определения размеров изображения в пикселях ?
Я использую VPF6 , VPF9.
Ratings: 0 negative/0 positive
Re: функции для работы с графическими файлами
Taran

Сообщений: 13625
Откуда: Красноярск
Дата регистрации: 16.01.2008
Ключевое слово: GDIPLUS.
Здесь неоднократно упоминалось.
Правда не совсем сразу, как скажем определить размер файла.
Пара строк/страниц кода понадобится.



Исправлено 1 раз(а). Последнее : Taran, 01.12.10 23:57
Ratings: 0 negative/0 positive
Re: функции для работы с графическими файлами
s.e.r.g.e.y.

Сообщений: 2838
Откуда: Киев
Дата регистрации: 22.04.2005
Сделайте запрос по GDIplus
Все что нужно для обработки графики.
Ratings: 0 negative/0 positive
Re: функции для работы с графическими файлами
Crispy

Сообщений: 18571
Дата регистрации: 16.05.2005
Nick S
функции для работы с графическими файлами *.jpg, *.gif, *.png, *.bmp, *.tif ,например для определения размеров изображения в пикселях ?

См.пример в прицепе к сообщению B3ersn3V: forum.foxclub.ru

Т.е. проще говоря все получается так:

CLEAR
lcDir = "c:\1\"
lcFileName = "Image001.jpg"
* создание объекта оболочки
loShellApp = CREATEOBJECT("Shell.Application")
loFolder = loShellApp.Namespace(lcDir)
* далее можно прочитать под номером "-1" основные свойства
* конкретного файла (Размеры, Тип, Размер файла):
loFile = loFolder.ParseName(lcFileName)
? loFolder.GetDetailsOf(loFile, 0) && Имя
? loFolder.GetDetailsOf(loFile, -1) && Основные свойства
* либо указывая конкретный номер только свойства "Размеры", которое
* имеет номер 26 в перечне свойств файла (из 40 стандартных):
? loFolder.GetDetailsOf(loFile, 26) && Размеры
* можно также просканировать все файлы в папке для считывания свойств:
loFolderItems = loFolder.Items()
FOR i=1 TO loFolderItems.Count
loFile = loFolderItems.Item(i-1)
? REPLICATE('-',20)
? loFolder.GetDetailsOf(loFile, 0) && Имя
? loFolder.GetDetailsOf(loFile, 26) && Размеры
ENDFOR


------------------
В действительности все иначе, чем на самом деле.
                                      (Антуан де Сент-Экзюпери)




Исправлено 1 раз(а). Последнее : Crispy, 02.12.10 09:08
Ratings: 0 negative/2 positive
Re: функции для работы с графическими файлами
Goodwin

Сообщений: 3539
Откуда: Омск
Дата регистрации: 03.05.2006
Как вариант:
with CreateObject('image')
.Pictue='image.jpg'
?.width, .height
endwith


------------------
Что мы знаем о лисе?
Ничего. И то не все.
(С)Б. Заходер
Ratings: 0 negative/1 positive
Re: функции для работы с графическими файлами
Taran

Сообщений: 13625
Откуда: Красноярск
Дата регистрации: 16.01.2008
Родион. thumbs down Убил!
Вот же пилять ленивый, но умный.
Ratings: 0 negative/0 positive
Re: функции для работы с графическими файлами
Nick S

Сообщений: 4
Дата регистрации: 01.12.2010
Большое спасибо за помощь
Ratings: 0 negative/0 positive
Re: функции для работы с графическими файлами
ullman
Автор

Сообщений: 65
Дата регистрации: 16.11.2009
Crispy, где можно найти названия основных свойств? А то вывел перечень всех сорока, что-то понятно к чему, что-то нет и много просто пустых строк.
Кстати, ваш код работает абсолютно корректно в отличии от нижеприведенного варианта.



Исправлено 2 раз(а). Последнее : ullman, 27.11.18 17:18
Ratings: 0 negative/0 positive
Re: функции для работы с графическими файлами
Crispy

Сообщений: 18571
Дата регистрации: 16.05.2005
ullman
где можно найти названия основных свойств? А то вывел перечень всех сорока, что-то понятно к чему, что-то нет и много просто пустых строк.

Метод loFolder.GetDetailsOf() в приводившемся коде, если его вызывать без первого аргумента или же с первым аргументом, не являющимся объектом loFolderItems, возвращает не значение i-го свойства файла, а название самого этого свойства.
Т.е. если в цикле задать:
FOR i=-1 to 40
? loFolder.GetDetailsOf(, i)
ENDFOR
выведется список названий всех свойств данного файла.
В основном они имеют смысл по отношению к медиа-файлам.

Либо так например - более информативно для просмотра:
FOR i=-1 to 40
? loFolder.GetDetailsOf(, i) + ' - ' + loFolder.GetDetailsOf(loFile, i)
ENDFOR


------------------
В действительности все иначе, чем на самом деле.
                                      (Антуан де Сент-Экзюпери)




Исправлено 3 раз(а). Последнее : Crispy, 28.11.18 09:27
Ratings: 0 negative/1 positive
Re: функции для работы с графическими файлами
ullman
Автор

Сообщений: 65
Дата регистрации: 16.11.2009
Вот спасибо! Да, конечно, большая часть - для медиафайлов, но некоторые годятся для фотографий. Для красоты надо отсеять пустые значения.
Ratings: 0 negative/0 positive
Re: функции для работы с графическими файлами
ullman
Автор

Сообщений: 65
Дата регистрации: 16.11.2009
i=24 выводит из Exif комментарий к картинке/фотографии. Всё хорошо, пока этот комментарий не длиннее 255 знаков. Тогда конструкция не выводит вообще ничего. И вот вопрос: как и где можно отследить длину комментария, чтобы что-то с ним сделать, как-то отреагировать?

CLEAR
lcDir1 = alltrim(GETFILE())
nCharacters=RAT([\],lcDir1)
lcFileName = RIGHT(lcDir1, LEN(lcDir1)-nCharacters)
lcDir = STRTRAN(lcDir1,lcFileName,[])
loShellApp = CREATEOBJECT("Shell.Application")
loFolder = loShellApp.Namespace(lcDir)
loFile = loFolder.ParseName(lcFileName)
? loFolder.GetDetailsOf(loFile, STR(24))
RETURN
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 23 kornienko_ru  (Гостей: 22)

© 2000-2024 Fox Club 
Яндекс.Метрика