Что нового

Отключение в _GDIPlus_GraphicsDrawImage обработки Exif или аналог функции

unsend

Новичок
Сообщения
27
Репутация
2
Необходимо вывести картинку лежащую по адресу StringReplace ( $tmpl, 'A ','')
Засада в том что функция _GDIPlus_GraphicsDrawImage обрабатывает Exif - доп информацию о файле где может присутствовать разрешение файла для печати аля 100х100dpi и выводит с расчетом указанного разрешения. Итог - выводится со скейлингом на экран. А надо чтоб было если 1024х768 - значит 1024х768 как есть по точкам. Может подскажите чем можно воспользоваться вместо этой функции или как отключить обработку Exif - сам на вскидку не могу найти подходящего ничего, а начальники плакают - времени в обрез:(

Код:
$hImage4 = _GDIPlus_ImageLoadFromFile(StringReplace ( $tmpl, 'A   ',''))
		 $sCLSID = _GDIPlus_EncodersGetCLSID ("JPG")
	_GDIPlus_GraphicsDrawImage($hGraphic, $hImage4, 0, 0)
 

asdf8

Скриптер
Сообщения
564
Репутация
152
Используйте _GDIPlus_GraphicsDrawImageRect, там можно явно указать все размеры.
 
Автор
U

unsend

Новичок
Сообщения
27
Репутация
2
Размеры могут быть любыми - в том то и проблема. У меня из вариантов пока был _GDIPlus_DrawImagePoints но там тотже трабл с размерами что и в _GDIPlus_GraphicsDrawImageRect, а вести опрос каждой картинки для получения корректного Х х У разрешения не хотелось бы в связи с увеличением вобщемто бессмысленной обработки Exif:smile: Хочется просто чтобы картинка выводилась с точки на экране (х,у) попиксельно до того пока не кончится картинка без указания габаритов, ток на вскидку не нашел ничего похожего:( Вот и возник такой вопрос:smile:


Добавлено:
Сообщение автоматически объединено:

Ладно - фих с ним - ручками функцию перепишу - не критикал:smile: Пасиб за помощь:smile:
 

asdf8

Скриптер
Сообщения
564
Репутация
152
unsend [?]
Размеры могут быть любыми - в том то и проблема.

Нет никакой проблемы:
Код:
_GDIPlus_GraphicsDrawImageRect($hGraphic, $hImage4, 0, 0, _GDIPlus_ImageGetWidth($hImage4), _GDIPlus_ImageGetHeight($hImage4))


Насчет остальной части поста - я вообще ничего не понял.
 
Автор
U

unsend

Новичок
Сообщения
27
Репутация
2
Сути это особенно не меняет:smile: Функция опроса размера изображений просто из библиотеки функций запускается:smile: А в реали трижды делает дурную работу - опрашивает с разными флагами 1 и туже картинку:
Код:
_GDIPlus_GraphicsDrawImageRect($hGraphic, $hImage4, 0, 0, _GDIPlus_ImageGetWidth($hImage4), _GDIPlus_ImageGetHeight($hImage4))

Func _GDIPlus_ImageGetHeight($hImage)
	Local $aResult = DllCall($ghGDIPDll, "int", "GdipGetImageHeight", "handle", $hImage, "uint*", 0)
	If @error Then Return SetError(@error, @extended, -1)
	Return SetExtended($aResult[0], $aResult[2])
 EndFunc   ;==>_GDIPlus_ImageGetHeight
Func _GDIPlus_ImageGetWidth($hImage)
	Local $aResult = DllCall($ghGDIPDll, "int", "GdipGetImageWidth", "handle", $hImage, "uint*", -1)
	If @error Then Return SetError(@error, @extended, -1)
	Return SetExtended($aResult[0], $aResult[2])
EndFunc   ;==>_GDIPlus_ImageGetWidth
 Func _GDIPlus_GraphicsDrawImageRect($hGraphics, $hImage, $iX, $iY, $iW, $iH)
	Local $aResult = DllCall($ghGDIPDll, "int", "GdipDrawImageRectI", "handle", $hGraphics, "handle", $hImage, "int", $iX, "int", $iY, _
			"int", $iW, "int", $iH)
	If @error Then Return SetError(@error, @extended, False)
	Return $aResult[0] = 0
EndFunc   ;==>_GDIPlus_GraphicsDrawImageRect


Именно для того чтобы этим не заниматься я и спрашивал о готовой функции которая опрашивает 1 раз но с необходимыми результатамиЖ)
 

asdf8

Скриптер
Сообщения
564
Репутация
152
unsend [?]
Функция опроса размера изображений просто из библиотеки функций запускается:smile: А в реали трижды делает дурную работу - опрашивает с разными флагами 1 и туже картинку

Нет никакой дурной работы - dll (GDI+) уже открыта, а определение размеров сводится к чтению нужного поля структуры и ресурсов практически не отнимает. Насколько я знаю - все остальные пути будут намного более ресурсоемкими.
 

Ganibal95

GreenBytes
Сообщения
877
Репутация
240
unsend
может ты выложишь картинку как она будет примерно в начале и после обработки?!
 
Автор
U

unsend

Новичок
Сообщения
27
Репутация
2
Забейте народ - тема уже решена более простым вариантом:smile: Оказалось по точкам картинку из памяти методом переноса быстрее будет:smile:
 
Верх