Bitmap src = (Bitmap) Image.FromFile(project.Variables["z"].Value); // в переменной путь к картинке
int black = 0; // количество черных пикселей
int white = 0; // количество белых пикселей
for (int x = 0; x < src.Width; x++) {
for (int y = 0; y < src.Height; y++) {
if (src.GetPixel(x, y).Name=="ff000000") {
black++;
} else {
white++;
}
}
}
if (black>white) {
white=0;
black=0;
for (int x = 0; x < src.Width; x++) {
for (int y = 0; y < src.Height; y++) {
//project.SendInfoToLog(src.GetPixel(x, y).Name, true);
if (src.GetPixel(x, y).Name=="ff000000") {
src.SetPixel(x, y, Color.White);
white++;
} else {
src.SetPixel(x, y, Color.Black);
black++;
}
}
}
}
src.Save(@"C:\captcha\my_captcha.png"); // сохранение результата в файл
src.Dispose(); // очистка мусора
Bitmap src = (Bitmap) Image.FromFile(project.Variables["z"].Value);
int black = 0;
int white = 0;
for (int x = 0; x < src.Width; x++) {
for (int y = 0; y < src.Height; y++) {
if (src.GetPixel(x, y).R > 200 && src.GetPixel(x, y).G > 200 && src.GetPixel(x, y).B > 200) {
src.SetPixel(x, y, Color.Black);
black++;
} else {
src.SetPixel(x, y, Color.White);
white++;
}
}
}
if (black>white) {
white=0;
black=0;
for (int x = 0; x < src.Width; x++) {
for (int y = 0; y < src.Height; y++) {
if (src.GetPixel(x, y).Name=="ff000000") {
src.SetPixel(x, y, Color.White);
black++;
} else {
src.SetPixel(x, y, Color.Black);
white++;
}
}
}
}
src.Save(@"F:\USER\Desktop\captcha_2.png");
src.Dispose();
Попробуйте выполнить пример на черной каптче.Юра, у Вас на скринах просто инвертирование. Не совсем понятно. Нужно же получить все картинки на белом фоне с черными буквами.
Обращаем Ваше внимание на то, что данный пользователь заблокирован.
Не рекомендуем проводить с 7make какие-либо сделки.
var bmp = new Bitmap(file);
var bgColor = bmp.GetPixel(0, 0);
for (int i = 0; i < bmp.Width; i++)
{
for (int j = 0; j < bmp.Height; j++)
{
var color = bmp.GetPixel(i, j);
if (color==bgColor)
{
bmp.SetPixel(i,j, Color.White);
}
else
{
bmp.SetPixel(i, j, Color.Black);
}
}
}
Это скрин уже с MCS.А де ты их нарыл ч/б?
Он не один такой.Бедный XRB ))
var bmp = new Bitmap(file);
var bgColor = bmp.GetPixel(0, 0);
for (int i = 0; i < bmp.Width; i++)
{
for (int j = 0; j < bmp.Height; j++)
{
var color = bmp.GetPixel(i, j);
if (color==bgColor)
{
bmp.SetPixel(i,j, Color.White);
}
else
{
bmp.SetPixel(i, j, Color.Black);
}
}
}
Или просто подставив путь...А как тут указать путь к картинкам?
Позже попробую оба варианта.Код:var bmp = new Bitmap(file); var bgColor = bmp.GetPixel(0, 0); for (int i = 0; i < bmp.Width; i++) { for (int j = 0; j < bmp.Height; j++) { var color = bmp.GetPixel(i, j); if (color==bgColor) { bmp.SetPixel(i,j, Color.White); } else { bmp.SetPixel(i, j, Color.Black); } } }
var bmp = new Bitmap(@"c:\captcha.png");
string file =project.Variables["file"].Value = @"c:\captcha.png";
var bmp = new Bitmap(file);
Как загрузить каптчу из файла в CapMonster?
//Отправка капчи из картинки
var captcha__get = project.Variables["captcha__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, "");
// отрезаем лишнее
var tmp = result.Split(new [] {"-|-"}, StringSplitOptions.None);
if (tmp.Length > 1)
{
project.Variables["UrlError"].Value = tmp[1];
return tmp[0];
}
return result;
спасибо, вопрос вернул)Путь к картинке должен лежать в переменной captcha__getКод://Отправка капчи из картинки var captcha__get = project.Variables["captcha__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, ""); // отрезаем лишнее var tmp = result.Split(new [] {"-|-"}, StringSplitOptions.None); if (tmp.Length > 1) { project.Variables["UrlError"].Value = tmp[1]; return tmp[0]; } return result;
UPD: Писал до удаление вашего поста. Пусть останется, может пригодится кому
Этот весь код можно заменить на одну строку.Путь к картинке должен лежать в переменной captcha__getКод://Отправка капчи из картинки var captcha__get = project.Variables["captcha__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, ""); // отрезаем лишнее var tmp = result.Split(new [] {"-|-"}, StringSplitOptions.None); if (tmp.Length > 1) { project.Variables["UrlError"].Value = tmp[1]; return tmp[0]; } return result;
в 11 строке можно указать модуль распознавания
var result = ZennoPoster.CaptchaRecognition("CapMonster2.dll", base64String, "CapMonsterModule=полное_имя_модуля");
string recognition = ZennoPoster.CaptchaRecognition(
"CapMonster2.dll",
Convert.ToBase64String(System.IO.File.ReadAllBytes(project.Variables["file"].Value)),
"CapMonsterModule=полное_имя_модуля");
В 1 потоке работает все хорошо. В многопотоке пока не тестилЭтот весь код можно заменить на одну строку.
Или, если свести в одну строку, то могут ресурсы неправильно освобождаться?
C#:string recognition = ZennoPoster.CaptchaRecognition( "CapMonster2.dll", Convert.ToBase64String(System.IO.File.ReadAllBytes(project.Variables["file"].Value)), "CapMonsterModule=полное_имя_модуля");
Здравствуйте Юра такой вопрос можно как то перекрасить черный пиксель в белый по координатом например вот такЭтот весь код можно заменить на одну строку.
Или, если свести в одну строку, то могут ресурсы неправильно освобождаться?
C#:string recognition = ZennoPoster.CaptchaRecognition( "CapMonster2.dll", Convert.ToBase64String(System.IO.File.ReadAllBytes(project.Variables["file"].Value)), "CapMonsterModule=полное_имя_модуля");
Я не являюсь специалистом в этой области деятельности.Здравствуйте Юра такой вопрос можно как то перекрасить черный пиксель в белый по координатом например вот так
Посмотреть вложение 22088
bmp.SetPixel(i,j, Color.White);
Просто если была бы возможность закрасить эти места белым хотя бы один пиксель с верху вниз то можно разгадывать эту капчу без Capmonster метод который находится в статии MoadipЯ не являюсь специалистом в этой области деятельности.
Все коды которые я использую - искал на данном форуме просто маленько изменял под свои нужды.
Чтобы закрасить пиксель нужно выполнить код:
Где задать координаты пикселя и цвет в который закрашивать.Код:bmp.SetPixel(i,j, Color.White);
Но, на сколько я понимаю вопрос состоит в том какой логикой руководствоваться для разбивки картинки на символы - увы, для себя я еще не решил этот вопрос.
Дайте ссылку на эту статью если сложно. В профиле Moadip не нашел(Просто если была бы возможность закрасить эти места белым хотя бы один пиксель с верху вниз то можно разгадывать эту капчу без Capmonster метод который находится в статии Moadip
http://zennolab.com/discussion/threads/raspoznavanie-simvolov-bez-tesseract-cm-i-prochix-servisov.31731/#post-228031Дайте ссылку на эту статью если сложно. В профиле Moadip не нашел(
Не подскажешь, а рекапчу таким образом можно как-то решать?Путь к картинке должен лежать в переменной captcha__getКод://Отправка капчи из картинки var captcha__get = project.Variables["captcha__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, ""); // отрезаем лишнее var tmp = result.Split(new [] {"-|-"}, StringSplitOptions.None); if (tmp.Length > 1) { project.Variables["UrlError"].Value = tmp[1]; return tmp[0]; } return result;
в 11 строке можно указать модуль распознавания
var result = ZennoPoster.CaptchaRecognition("CapMonster2.dll", base64String, "CapMonsterModule=полное_имя_модуля");