Что нового

Отслеживание картинки на сайте

MadMNN

Новичок
Сообщения
27
Репутация
0
Два вопроса:
1.к примеру скрипт смотрит есть ли картинка по определенному адресу (придуманная ссылка на картинку http://www.site.ru/pic.jpg)
в зависимости от наличия-отсутствия делаем-не делаем что либо
2. можно ли использовать картинку на сайте в работе скрипта, к примеру в ImageSearch
 

Arei

Скриптер
Сообщения
938
Репутация
115
не знаю как у вас, но у меня только буквы "A" и всё.
 

Zaramot

I ♥ AutoIt
Сообщения
1,160
Репутация
660
1) Можно так:
Код:
#include <Inet.au3>

$URL = 'http://www.autoitscript.com/forum/'
$ImageURL = 'http://www.autoitscript.com/forum/public/style_images/master/f_icon.png'

$HTML = _INetGetSource($URL)
If StringInStr($HTML, $ImageURL) = 0 Then
	MsgBox(0, '', 'Ссылки нет')
Else
	MsgBox(0, '', 'Ссылка есть')
EndIf

или так:
Код:
#include <Inet.au3>
#include <Array.au3>

$URL = 'http://www.autoitscript.com/forum/'
$ImageURL = 'http://www.autoitscript.com/forum/public/style_images/master/f_icon.png'

$HTML = _INetGetSource($URL)
$RegExp = StringRegExp($HTML, '(?si)(?:.*?)?(https?:\/\/[\w.:]+\/?(?:[\w\/?&=.~;\-+!*_#%])*)', 3)

For $i = 0 To _ArrayMaxIndex($RegExp)
	If $RegExp[$i] = $ImageURL Then Exit MsgBox(0, '', 'Ссылка есть')
Next

MsgBox(0, '', 'Ccылки нет')


2) Можно скачать картинку (через INetGet()) и работать с ней.
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Zaramot [?]
Можно скачать картинку (через INetGet()) и работать с ней.
А можно и не скачивать. На форуме где-то есть этот пример Yashied`a.
Код:
#include <GDIPlus.au3>
#include <Memory.au3>
#include <WinAPIEx.au3>

Global Const $STM_SETIMAGE = 0x0172
Global Const $STM_GETIMAGE = 0x0173
Global $hForm, $Pic, $hPic, $hBitmap, $hObj, $hImage, $hStream, $bData, $hData, $pData, $tData, $Width, $Height, $Lenght

$sUrl = 'http://limg.imgsmail.ru/r/default/splash/splash-logo.png'

$bData = InetRead($sUrl, 17)
If @error Then
	MsgBox(16, 'Ошибка', 'Ошибка')
	Exit
EndIf
$Lenght = BinaryLen($bData)
$hData = _MemGlobalAlloc($Lenght, 2)
$pData = _MemGlobalLock($hData)
$tData = DllStructCreate('byte[' & $Lenght & ']', $pData)
DllStructSetData($tData, 1, $bData)
_MemGlobalUnlock($hData)
$hStream = _WinAPI_CreateStreamOnHGlobal($hData)
_GDIPlus_Startup()
$hImage = _GDIPlus_BitmapCreateFromStream($hStream)
$hBitmap = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hImage)
$Width = _GDIPlus_ImageGetWidth($hImage)
$Height = _GDIPlus_ImageGetHeight($hImage)
_GDIPlus_ImageDispose($hImage)
_GDIPlus_Shutdown()

$hForm = GUICreate('MyGUI', $Width + 100, $Height + 100)
$Pic = GUICtrlCreatePic('', 10, 10)
$hPic = GUICtrlGetHandle($Pic)
_SendMessage($hPic, $STM_SETIMAGE, 0, $hBitmap)
$hObj = _SendMessage($hPic, $STM_GETIMAGE)
If $hObj <> $hBitmap Then
	_WinAPI_DeleteObject($hBitmap)
EndIf
GUISetState()

Do
Until GUIGetMsg() = -3

Func _GDIPlus_BitmapCreateFromStream($hStream)
	Local $aResult = DllCall($ghGDIPDll, 'uint', 'GdipCreateBitmapFromStream', 'ptr', $hStream, 'int*', 0)
	If @error Then
		Return SetError(@error, @extended, 0)
	EndIf
	Return $aResult[2]
EndFunc   ;==>_GDIPlus_BitmapCreateFromStream
 
Автор
M

MadMNN

Новичок
Сообщения
27
Репутация
0
вау. спасибо всем. буду ляпаться :smile:
 
Верх