WRFan

Gold Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору в связи с тем, что rapidshare.com стали использовать анимированные гиф картинки, решил накатать vbscript, позволяющий работать с анимированными гифами вне зависимости от настроек браузера, т.к. в IE я gif анимацию отключил, чтобы на нервы не действовала. только я кончил писать скрипт, как ровно через 5 минут рапидшарцы снова заменили анимированные картинки на обычные. глупо. но не в этом дело. скрипт получился довольно интересный и может ещё понадобится. надыбал на сайте микрозофта бесплатную, а по возможностям бесценную activex библиотеку под названием Windows Image Acquisition Library v2.0. позволяет работать с имеджами. думал буду заменять линки на ани-гифы в рапидшарском сорс коде на мой vbscript на лету с помощью проксомитрона. но теперь неважно. а скрипт получился следующего содержания: Код: <SCRIPT LANGUAGE="VBSCRIPT"> 'Set Http = CreateObject("MSXMLHTTP2.ServerXMLHTTPHTTP") 'Set Http = CreateObject("WinHttp.WinHttpRequest.5.1") Set XMLHTTP = CreateObject("Microsoft.XMLHTTP") Set AdoStream = CreateObject("ADODB.Stream") url = "http://127.0.0.1:85/asp/access4417101.gif" 'only for testing purposes p=instrrev(url,"/") filename = right(url,len(url)-p) XMLHTTP.open "GET", url, False XMLHTTP.Send Set ADOStream = CreateObject("ADODB.Stream") ADOStream.type = 1 ADOStream.Open ADOStream.Write XMLHTTP.responseBody Set filesys1 = CreateObject("Scripting.FileSystemObject") Set folder = filesys1.GetSpecialFolder(2) ADOStream.SaveToFile folder & "\" & filename, 2 ADOStream.Close '--------------------------------------------- Dim Img 'As ImageFile Dim IP 'As ImageProcess Dim v 'As Vector Set Img = CreateObject("WIA.ImageFile") Set IP = CreateObject("WIA.ImageProcess") Set v = CreateObject("WIA.Vector") Img.LoadFile folder & "\" & filename 'If Img.IsAnimated Then 'msgbox "This is an animated image." 'Else 'msgbox "This is not an animated image." 'end if 'Img.ActiveFrame = Img.FrameCount 'Img.ActiveFrame = 12 for each oProperty in Img.Properties if IsObject(oProperty.Value) Then set oVector = oProperty.Value for i = 1 to oVector.Count 'number of frames if oVector(i) >= 15000 AND oVector(i) < 25000 then Img.ActiveFrame = i 'Select Case oVector(i) 'Case 19928: 'Img.ActiveFrame = i 'msgbox Img.ActiveFrame 'End Select next end if next '--------------------------------------------- IP.Filters.Add IP.FilterInfos("Scale").FilterID IP.Filters(1).Properties("MaximumWidth") = 350 IP.Filters(1).Properties("MaximumHeight") = 250 Set Img = IP.Apply(Img) Img.SaveFile folder & "\hacked_" & filename '--------------------------------------------- document.write("<IMG SRC=" & folder & "\hacked_" & filename & ">") set filesys2 = CreateObject ("Scripting.FileSystemObject") set demofile = filesys2.GetFile(folder & "\hacked_" & filename) set demofile2 = filesys2.GetFile(folder & "\" & filename) demofile.Delete demofile2.Delete </SCRIPT> | занятно. т.к. WIA не в состоянии скачивать файлы из интернета, а файлы в кэше спрятаны в \local settings\Temporary Internet Files\Content.IE5, решил скачивать картинки из нета с помощью Microsoft.XMLHTTP activex объекта. как только файл оказывается на харде, скриптик тут же набрасывается на него и начинает его терзать с помощью WIA activex-а, а именно проверяет frame delay, т.е. количество секунд между отдельными фреймами в картинке. у этих рапидшарских дураков это примерно так выглядело: Код: FrameDelay 800, 10, 17, 16, 11, 17, 18, 19, 12, 12, 11, 19928, 5587, 419, 547, 2271, 7520, 28633, 28113, 3403, 1652 | как видите, сначала приходилось ждать 800 секунд, пока первый фрейм переключался на 2-ой! потом картинка доходила до 12-ого фрейма и на нём застревала на 20.000 секунд. ужасно глупое решение, но таким образом можно легко засечь, какой из фреймов содержит нужную картинку (с правильными цифрами). после этого правильный фрейм вырезается из картинки, увеличивается, чтобы лучше было видно и сохраняется в отдельный имедж файл, состоящий из одного фрейма. а потом через document.write вставляется в документ, открытый в браузере. после этого оба файла убираются с харда (из %temp% папки). советую взглянуть на WIA, возможности очень обширные. другие за такое дерут по 100 баксов, а дядя Билл бесплатно раздаёт. документация в chm формате прилагается, есть и на msdn.microsoft.com, но локальная быстрее открывается конечно. |