И снова эта ошибка...

Spikers07

Client
Joined
May 25, 2016
Messages
123
Reaction score
54
Points
28
Никак не могу понять в чем причина ошибки при выполнении данного кода:

C#:
//Отправка капчи из картинки
var captcha__get = project.Variables["url_captcha"].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, "");
// отрезаем лишнее
var tmp = result.Split(new [] {"-|-"}, StringSplitOptions.None);
if (tmp.Length > 1) return tmp[0];
return result;
В ответ приходит это:
C#:
Выполнение действия CSharp OwnCode: CapMonster2.dll. Недостаточно памяти.

Переменная url_captcha равно адресу на компе капчи в формате php
Памяти хватает, место есть, сохранение капчи есть.


Данный код был взялгода три назад на этом форуме и отлично всегда работал. Но в последнее время начал ерундить.
Я не силён в си шарпе, просьба помогающим, если нашли ошибку, не указывать где что исправить, а оставить комментарий с готовым решением, буду очень благодарен! :dk:
 
Last edited:

Yuriy Zymlex

Moderator
Staff member
Joined
Oct 24, 2016
Messages
6,598
Reaction score
3,407
Points
113
var image = System.Drawing.Image.FromFile(@captcha__get);
Недавно отвечал на этот вопрос, вроде даже вам, что эта строчка тоже требует using.
 

Spikers07

Client
Joined
May 25, 2016
Messages
123
Reaction score
54
Points
28
Недавно отвечал на этот вопрос, вроде даже вам, что эта строчка тоже требует using.
Да, вы отвечали. Но я не понимаю что обернуть и как) Буду рад если вы обернете что надо и скинете готовое решение всего кода)
 

Yuriy Zymlex

Moderator
Staff member
Joined
Oct 24, 2016
Messages
6,598
Reaction score
3,407
Points
113
Да, вы отвечали. Но я не понимаю что обернуть и как) Буду рад если вы обернете что надо и скинете готовое решение всего кода)
Примерно так:
C#:
//Отправка капчи из картинки
var captcha__get = project.Variables["url_captcha"].Value;
string base64String = String.Empty;
using (var image = System.Drawing.Image.FromFile(@captcha__get))
{
    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("Anti-Captcha.dll", base64String, "");
// отрезаем лишнее
var tmp = result.Split(new [] {"-|-"}, StringSplitOptions.None);
if (tmp.Length > 1) return tmp[0];
return result;
Не тестил.
 

Spikers07

Client
Joined
May 25, 2016
Messages
123
Reaction score
54
Points
28
Поправил.
Также.


Выполнение действия CSharp OwnCode: CapMonster2.dll. Недостаточно памяти.

Версия зенки 5.43.00
 

Yuriy Zymlex

Moderator
Staff member
Joined
Oct 24, 2016
Messages
6,598
Reaction score
3,407
Points
113

Phoenix78

Client
Read only
Joined
Nov 6, 2018
Messages
11,789
Reaction score
5,729
Points
113

Spikers07

Client
Joined
May 25, 2016
Messages
123
Reaction score
54
Points
28
C#:
try
{
    // Тут весь проблемный код
}
catch(Exception e)
{
    project.SendErrorToLog(e.Message + "\r\n" + e.StackTrace, true);
    throw;
}
Суть в e.StackTrace, который показывает, какой метод вызвал исключение.
Так же содержит номер строки кода, но при таком способе, он не актуален в сниппетах.
Если я всё правильно сделал...
Создал новый кубик С#
Поместил туда данный код:


C#:
try
{
//Отправка капчи из картинки
var captcha__get = project.Variables["url_captcha"].Value;
string base64String = String.Empty;
using (var image = System.Drawing.Image.FromFile(@captcha__get))
{
    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, "");
// отрезаем лишнее
var tmp = result.Split(new [] {"-|-"}, StringSplitOptions.None);
if (tmp.Length > 1) return tmp[0];
return result;    // Тут весь проблемный код
}
catch(Exception e)
{
    project.SendErrorToLog(e.Message + "\r\n" + e.StackTrace, true);
    throw;
}

В ответ я получил данное:


C#:
Тип    Время    Сообщение
    23:34:39    " Недостаточно памяти.
   в System.Drawing.Image.FromFile(String filename, Boolean useEmbeddedColorManagement)
   в ZennoLab.OwnCode.Ca916fa1cabe74d46b36f78ae0c96cc75.Ma916fa1cabe74d46b36f78ae0c96cc75(IZennoPosterProjectModel project, Instance instance) в c:\Users\MSI\AppData\Local\Temp\CompilerFolder\ProjectMaker\A1de756d97f514572996743155446cd47\0jpsnmg2.10.cs:строка 35"
 

Yuriy Zymlex

Moderator
Staff member
Joined
Oct 24, 2016
Messages
6,598
Reaction score
3,407
Points
113

Spikers07

Client
Joined
May 25, 2016
Messages
123
Reaction score
54
Points
28
Так хоть понятно, какой метод вызывает ошибку.


Вероятно у вас битый файл или не поддерживаемый формат.
Интересно, возможно всё же проблема заключается в битом файле. Данный кубик скачивает капчу
59065

Если взять любое значение вместо переменной сид капчи и перейдем по ссылке то получим капчу и через браузер она сохраняется в jpeg формате, а через кубик в php. Может здесь что то не так?
 

Spikers07

Client
Joined
May 25, 2016
Messages
123
Reaction score
54
Points
28
простая операция на 2 строки, превращается в кучу кода :-)
Буду рад если предоставите готовое решение, попробую)


C#:
string captchapath = project.Directory+@"\"+ project.Variables["url_captcha"].Value; // путь к картинке
string b64strcaptcha = Convert.ToBase64String(System.IO.File.ReadAllBytes(captchapath));
Выдает ошибку.
 
Last edited:

Spikers07

Client
Joined
May 25, 2016
Messages
123
Reaction score
54
Points
28
Решение так и не нашлось
 

Spikers07

Client
Joined
May 25, 2016
Messages
123
Reaction score
54
Points
28
В первом шаблоне с данным кодом капча разгадывается: прикрепление "капча1"
Во втором шаблоне с этим же кодом с тем же кубиком гет запросом скачивания как файл не разгадывается: прикпрепление "капча2"
 

Attachments

Spikers07

Client
Joined
May 25, 2016
Messages
123
Reaction score
54
Points
28
Также могу показать по таймвиверу
 

Phoenix78

Client
Read only
Joined
Nov 6, 2018
Messages
11,789
Reaction score
5,729
Points
113

Spikers07

Client
Joined
May 25, 2016
Messages
123
Reaction score
54
Points
28
ну если битый файл , то тут ничего не сделаешь.
у меня вот так код отработал.
View attachment 59124
ну если битый файл , то тут ничего не сделаешь.
у меня вот так код отработал.
View attachment 59124
Мы сейчас проверили с опытным пользователем зенки, тоже удивился, у него всё работает, этот же шаблон, на 7.
У меня 5.43. Я подумал что это баг на этой версии, почему та раз через раз срабатывает.
В любом случае этот случай интересный, т.к реально один и тот же код в одном работает, в другом нет)
 

Spikers07

Client
Joined
May 25, 2016
Messages
123
Reaction score
54
Points
28
Решение всё так и не найдено
 

Phoenix78

Client
Read only
Joined
Nov 6, 2018
Messages
11,789
Reaction score
5,729
Points
113
Решение всё так и не найдено
а какое решение ищется ? если битый файл, то хоть головой об стену бейся, в формат base64 принимаемый для распознования не получиться перевести.
выше подсказали решение , использовать try / cath . если код вышел по исключению , то выводить на красную и делать альтернативную логику. ну там или повторно пытаться получить файл или обновлять страницу, ну или какие другие действия.
 

Spikers07

Client
Joined
May 25, 2016
Messages
123
Reaction score
54
Points
28
а какое решение ищется ? если битый файл, то хоть головой об стену бейся, в формат base64 принимаемый для распознования не получиться перевести.
выше подсказали решение , использовать try / cath . если код вышел по исключению , то выводить на красную и делать альтернативную логику. ну там или повторно пытаться получить файл или обновлять страницу, ну или какие другие действия.
Снёс все версии зенки, включая семёрку и дроид, оставил последнюю что мне доступно 5.43
Почистил реестр ошибок, временные файлы и тп.
И только после этого заработал код.
 

Users Who Are Viewing This Thread (Total: 1, Members: 0, Guests: 1)