Что нового

_ImageSearch, определение с интернет-ссылки

see

Новичок
Сообщения
2
Репутация
0
интересует следующий вопрос: как реализовать поиск картинки, расположенной по адресу в сети (например http://www.ru/12345.bmp). В принципе не столь важен протокол и прочее, как местположение картинки, т.е. доступное мне всегда и с разных машин, при этом картинка (картинки) могут быть изменены только мной (свой хост).
 

firex

AutoIT Гуру
Сообщения
943
Репутация
208
see
Загружаете ее на компьютер и делаете что требуется. К примеру так:
Код:
Global $oHTTP = ObjCreate( "WinHttp.WinHttpRequest.5.1" )

__InetGetBmp( $oHTTP, "http://www.ru/12345.bmp", @ScriptDir & "\12345.bmp" )
Func __InetGetBmp( ByRef $oObj, $sUrl, $sPath )
	Local $hFile, $vBody
	; ---
	$oObj.Open( "GET", $sUrl, False )
	$oObj.setTimeouts( 0, 3000, 2000, 4000 )
	$oObj.SetRequestHeader( "Accept", "image/bmp" )
	$oObj.Send()
	$oObj.WaitForResponse
	If $oObj.Status == 200 Then
		$vBody = $oObj.ResponseBody
		; -
		$hFile = FileOpen( $sPath, 2 )
		FileWrite( $hFile, $vBody )
		FileClose( $hFile )
		; -
		Return StringLen( $vBody )
	EndIf
	; ---
	Return SetError( 1, 0, 0 )
EndFunc
 
Автор
S

see

Новичок
Сообщения
2
Репутация
0
Да, спасибо, в этом направлении копал....
подгружал только в temp... пусть так.. НО вопрос остается таков: это 12345.bmp человек же может оставить старым? или я заблуждаюсь и он обновится? меня лично интересует то, что при каждом вызывании функции картинка должна сравниваться с оригиналом (который на серваке).... суть примерно такая: сегодня там лютик нарисован, а завтра скажем автомобиль.... отсюда и проблемка: дать десятку пользопателей новье, обновлением одной картинки.....
 

firex

AutoIT Гуру
Сообщения
943
Репутация
208
see
Можете к примеру перед загрузкой удалить старое изображение:
Код:
FileDelete


И далее применить конструкцию:
Код:
If __InetGetBmp( $oHTTP, "http://www.ru/12345.bmp", @ScriptDir & "\12345.bmp" ) Then
    ;Изображение успешно загружено
Else
    ;Ошибка
EndIf
 

alex33

Скриптер
Сообщения
1,457
Репутация
186
firex сказал(а):
Код:
FileOpen( $sPath, 2 )
Я бы сделал флаги 2 + 16 , данные то бинарные :smile: :
Код:
FileOpen( $sPath, 2 + 16 )


А ещё я бы использовал встроенный InetGet, примерно так:
Код:
If InetGet( "http://www.ru/12345.bmp", @ScriptDir & "\12345.bmp", 1 ) > 0 Then
    ;Изображение успешно загружено
Else
    ;Ошибка
EndIf
 

firex

AutoIT Гуру
Сообщения
943
Репутация
208
alex33
ResponseBody возвращает данные НЕ в бинарном виде.
InetGet при некоторых обстоятельствах вешает скрипт@приходится загружать только в фоне. Зачем городить лишние конструкции когда есть более простое решение?
 
Верх