Можно ли посредством ZP конвертировать изображение в base64?

vaulroon

Client
Регистрация
20.10.2017
Сообщения
274
Благодарностей
11
Баллы
18

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
19 512
Благодарностей
8 702
Баллы
113
  • Спасибо
Реакции: vaulroon

vaulroon

Client
Регистрация
20.10.2017
Сообщения
274
Благодарностей
11
Баллы
18

СТЕПАН

Moderator
Регистрация
17.03.2013
Сообщения
951
Благодарностей
352
Баллы
63

Koqpe

Client
Регистрация
23.12.2014
Сообщения
1 100
Благодарностей
649
Баллы
113
Код:
//Сначала GET запросом сохраняем картинку как файл
//Отправка капчи из картинки
var captcha__get = project.Variables["GET"].Value;
var image = System.Drawing.Image.FromFile(@captcha__get);
string base64String = String.Empty;
using (System.IO.MemoryStream ms = new System.IO.MemoryStream())
{
    image.Save(ms, System.Drawing.Imaging.ImageFormat.Png);
    byte[] imageBytes = ms.ToArray();
    base64String = Convert.ToBase64String(imageBytes);
}
var result = ZennoPoster.CaptchaRecognition("CapMonster2.dll", base64String, "restate");
return result;
//в конце не забываем поставить кубик "файл" удалить. устанавливаем вместо пути - переменную GET
"CapMonster2.dll", base64String, "restate"); вместо restate укажи название модуля капмонстра, через который гадать будешь, вместо CapMonster2.dll нужный сервис разгадывания
 
  • Спасибо
Реакции: Shogo и vaulroon

vaulroon

Client
Регистрация
20.10.2017
Сообщения
274
Благодарностей
11
Баллы
18
Код:
//Сначала GET запросом сохраняем картинку как файл
//Отправка капчи из картинки
var captcha__get = project.Variables["GET"].Value;
var image = System.Drawing.Image.FromFile(@captcha__get);
string base64String = String.Empty;
using (System.IO.MemoryStream ms = new System.IO.MemoryStream())
{
    image.Save(ms, System.Drawing.Imaging.ImageFormat.Png);
    byte[] imageBytes = ms.ToArray();
    base64String = Convert.ToBase64String(imageBytes);
}
var result = ZennoPoster.CaptchaRecognition("CapMonster2.dll", base64String, "restate");
return result;
//в конце не забываем поставить кубик "файл" удалить. устанавливаем вместо пути - переменную GET
"CapMonster2.dll", base64String, "restate"); вместо restate укажи название модуля капмонстра, через который гадать будешь, вместо CapMonster2.dll нужный сервис разгадывания
http://zennolab.com/discussion/threads/get-post-zaprosy-i-kapcha.14657/#post-88712
http://zennolab.com/discussion/threads/get-post-zaprosy-i-kapcha.14657/#post-117430
вчера еще перед сном вот это нашел. Сегодня попробую все варианты, спасибо.
Я просто думал, может можно как-то парсить base64 без сохранения файла, но по ходу без этого не обойтись.
В общем, опробую варианты, по результату отпишусь.
 

Koqpe

Client
Регистрация
23.12.2014
Сообщения
1 100
Благодарностей
649
Баллы
113
Я просто думал, может можно как-то парсить base64 без сохранения файла, но по ходу без этого не обойтись.
Можно скачать файл в виде массива байтов в память и отправить на сервер, но без сторонних библиотек не обойтись.
 

vaulroon

Client
Регистрация
20.10.2017
Сообщения
274
Благодарностей
11
Баллы
18
Код:
//Сначала GET запросом сохраняем картинку как файл
//Отправка капчи из картинки
var captcha__get = project.Variables["GET"].Value;
var image = System.Drawing.Image.FromFile(@captcha__get);
string base64String = String.Empty;
using (System.IO.MemoryStream ms = new System.IO.MemoryStream())
{
    image.Save(ms, System.Drawing.Imaging.ImageFormat.Png);
    byte[] imageBytes = ms.ToArray();
    base64String = Convert.ToBase64String(imageBytes);
}
var result = ZennoPoster.CaptchaRecognition("CapMonster2.dll", base64String, "restate");
return result;
//в конце не забываем поставить кубик "файл" удалить. устанавливаем вместо пути - переменную GET
"CapMonster2.dll", base64String, "restate"); вместо restate укажи название модуля капмонстра, через который гадать будешь, вместо CapMonster2.dll нужный сервис разгадывания
Руки дошли наконец-таки. Твой скрипт проверил, все сработало сразу и идеально. Даже не пришлось найденные мной примеры использовать. Спасибо большое. )
 

vaulroon

Client
Регистрация
20.10.2017
Сообщения
274
Благодарностей
11
Баллы
18
Можно скачать файл в виде массива байтов в память и отправить на сервер, но без сторонних библиотек не обойтись.
Слушай, а вот еще вопрос: если делать, как ты говоришь, в виде массива байтов в память пихать - это
а) Более надежно, чем сохранять капчу в файл, отправлять ее в кампостер и удалять файл?
б) Больше ресурсов потребляет, чем первый вариант? (если да, то значительно ли?)
 

Koqpe

Client
Регистрация
23.12.2014
Сообщения
1 100
Благодарностей
649
Баллы
113
По ресурсам не скажу, а по времени так:
2017-11-27_13-19-26.png

закачивались шесть картинок разного размера
а) Более надежно, чем сохранять капчу в файл, отправлять ее в кампостер и удалять файл?
Я всегда пользуюсь стандартными экшенами для капчи.
А вообще рекомендую поучаствовать в https://skladchik.com/threads/Набор-шаблонов-и-сниппетов-zennoposter-c-для-самообучения.153466/#recent-actions
Как раз в мини обзорах раскрыт практически полностью Ваш вопрос
 
Последнее редактирование:
  • Спасибо
Реакции: vaulroon

Moadip

Client
Регистрация
26.09.2015
Сообщения
509
Благодарностей
823
Баллы
93
Слушай, а вот еще вопрос: если делать, как ты говоришь, в виде массива байтов в память пихать - это
а) Более надежно, чем сохранять капчу в файл, отправлять ее в кампостер и удалять файл?
б) Больше ресурсов потребляет, чем первый вариант? (если да, то значительно ли?)
Пихать в память массив байтов, это лучший вариант, т.к. это будет гораздо быстрее.
Представь, если у тебя многопоточный шаб, который активно юзает капчу, и приходится решать их очень много. Тогда узким местом будет именно сохранение на винт.
Да и здоровья винту это не добавит, постоянно будет дергаться на чтение/запись.
По ресурсам, ну сколько там у тебя картинка оперативки отожрет. У тебя же явно не 1 гиг оперативы стоит, чтобы за каждый кб/мб думать.:-)
 

vaulroon

Client
Регистрация
20.10.2017
Сообщения
274
Благодарностей
11
Баллы
18
Пихать в память массив байтов, это лучший вариант, т.к. это будет гораздо быстрее.
Представь, если у тебя многопоточный шаб, который активно юзает капчу, и приходится решать их очень много. Тогда узким местом будет именно сохранение на винт.
Да и здоровья винту это не добавит, постоянно будет дергаться на чтение/запись.
По ресурсам, ну сколько там у тебя картинка оперативки отожрет. У тебя же явно не 1 гиг оперативы стоит, чтобы за каждый кб/мб думать.:-)
Да, я уже понял это. Как минимум - в потоке ужасно удаляет капчу.
Но я в душе не представляю, как грузить массивы в память и как их отправлять в кампостер. :(
Подсказал бы кто >_> намек
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)