Сложный вариант "Сохранить картинку как"

bizzon

Client
Joined
Sep 8, 2015
Messages
1,120
Reaction score
135
Points
63
На сайте есть Canvas картинка, в коде нет ссылки на сохранение. Но в браузере возможность есть через "правой кнопкой мыши" ---> "Сохранить картинку как".
Как реализовать этот вариант ---> "Сохранить картинку как"?
 

amyboose

Client
Joined
Apr 21, 2016
Messages
2,311
Reaction score
1,192
Points
113
отрисовать через javascript
подробнее в гугле можно найти
 

Yuriy Zymlex

Client
Joined
Oct 23, 2016
Messages
6,713
Reaction score
3,478
Points
113
Last edited:

bizzon

Client
Joined
Sep 8, 2015
Messages
1,120
Reaction score
135
Points
63

Yuriy Zymlex

Client
Joined
Oct 23, 2016
Messages
6,713
Reaction score
3,478
Points
113
Это каким кубиком?
Для текущей страницы (вариант под картинку):
C#:
HtmlElement he = instance.ActiveTab.FindElementByXPath("//img[@src='https://help.zennolab.com/upload/marketing/f/flogo-ru1.png']", 0);
if (he.IsVoid) throw new Exception("img не найден.");
Bitmap bitmap = he.DrawAsBitmap(true);
try
{
    bitmap.Save(@"C:\test.png", ImageFormat.Png);
}
catch (Exception e)
{
    throw new Exception("Ошибка при сохранении Bitmap", e);
}
finally
{
    bitmap.Dispose();
}
Вариант под канвас (пост ниже).
 
  • Thank you
Reactions: volody00

Alex733

Client
Joined
Nov 27, 2017
Messages
348
Reaction score
248
Points
43
Только DrawAsBitmap не true - а false - ТС ищет canvas, а не img.
 

bizzon

Client
Joined
Sep 8, 2015
Messages
1,120
Reaction score
135
Points
63
Только DrawAsBitmap не true - а false - ТС ищет canvas, а не img.
Sorry, так как в конечном варианте это должно в коде выглядеть?

Выполнение действия JavaScript OwnCode Script Error: SyntaxError: missing ; before statement
 
Last edited:

Alex733

Client
Joined
Nov 27, 2017
Messages
348
Reaction score
248
Points
43
Приблизительно так: (На основе кода из поста @Zymlex)
C#:
HtmlElement he = instance.ActiveTab.FindElementByTag("canvas",0);
if (he.IsVoid) throw new Exception("canvas не найден.");
Bitmap bitmap = he.DrawAsBitmap(false);
try
{
    bitmap.Save(@"C:\test.png", ImageFormat.Png);
}
catch (Exception e)
{
    throw new Exception("Ошибка при сохранении Bitmap", e);
}
finally
{
    bitmap.Dispose();
}
Есть еще вариант: js и c# - сохранение всех canvas на странице, но должно и этого хватить.
 
  • Thank you
Reactions: Yuriy Zymlex

bizzon

Client
Joined
Sep 8, 2015
Messages
1,120
Reaction score
135
Points
63
Приблизительно так: (На основе кода из поста @Zymlex)
Опять дает:
Выполнение действия JavaScript OwnCode Script Error: SyntaxError: missing ; before statement
 

Alex733

Client
Joined
Nov 27, 2017
Messages
348
Reaction score
248
Points
43
Посмотрите на какую строчку ругается и добавьте туда - ;
 
  • Thank you
Reactions: bizzon

bizzon

Client
Joined
Sep 8, 2015
Messages
1,120
Reaction score
135
Points
63
Всем ОГРОМНОЕ СПАСИБО....
Я совсем Нуб, и лоханулся, все писал в экшен Java
Пока Zymlex все не разрулил, Ему персональное спасибо!!
 

ssXXXss

Client
Joined
Dec 23, 2014
Messages
7,374
Reaction score
2,043
Points
113
а чё разрулил, код в студию,
 

ssXXXss

Client
Joined
Dec 23, 2014
Messages
7,374
Reaction score
2,043
Points
113
Юзинг хорош, когда можно забить на происходящее в нём.
Тут всё же, это может быть неуместно (если каждый скрин необходим, как в случае капч, например).
так тру кейч на ошибку, там типо ошибок не дожно быть,зачем ?
 

bizzon

Client
Joined
Sep 8, 2015
Messages
1,120
Reaction score
135
Points
63
а чё разрулил, код в студию,
Все сохраняет отлично, да вот беда, без прозрачного фона, а "правой кнопкой мыши" ---> "Сохранить картинку как" с прозрачным, как и нужно.
Может что-то можно сделать и здесь?
 

Attachments

  • Thank you
Reactions: eee

ssXXXss

Client
Joined
Dec 23, 2014
Messages
7,374
Reaction score
2,043
Points
113
всмысле ты одну картиинку пытаешщься сохоранить ?
 

bizzon

Client
Joined
Sep 8, 2015
Messages
1,120
Reaction score
135
Points
63
ну да общую
 

ssXXXss

Client
Joined
Dec 23, 2014
Messages
7,374
Reaction score
2,043
Points
113
всмысле ты одну картиинку пытаешщься сохоранить ?
под одним именем 7
 

ssXXXss

Client
Joined
Dec 23, 2014
Messages
7,374
Reaction score
2,043
Points
113
Приблизительно так: (На основе кода из поста @Zymlex)
C#:
HtmlElement he = instance.ActiveTab.FindElementByTag("canvas",0);
if (he.IsVoid) throw new Exception("canvas не найден.");
Bitmap bitmap = he.DrawAsBitmap(false);
try
{
    bitmap.Save(@"C:\test.png", ImageFormat.Png);
}
catch (Exception e)
{
    throw new Exception("Ошибка при сохранении Bitmap", e);
}
finally
{
    bitmap.Dispose();
}
Есть еще вариант: js и c# - сохранение всех canvas на странице, но должно и этого хватить.
много действий
 

bizzon

Client
Joined
Sep 8, 2015
Messages
1,120
Reaction score
135
Points
63
"правой кнопкой мыши" ---> "Сохранить картинку как" - все делает как надо в один клик.
Нужно, наверное, в этом направлении идти.
 

ssXXXss

Client
Joined
Dec 23, 2014
Messages
7,374
Reaction score
2,043
Points
113
"правой кнопкой мыши" ---> "Сохранить картинку как" - все делает как надо в один клик.
Нужно, наверное, в этом направлении идти.
что зенка предлагает ?
имя файла ?
или системноно сохраняется как принимает винда
винда накоппирует
в твоём случае ошибка
 

bizzon

Client
Joined
Sep 8, 2015
Messages
1,120
Reaction score
135
Points
63
что зенка предлагает ?
имя файла ?
так если б знал как сделать .... и с чего начать
 

ssXXXss

Client
Joined
Dec 23, 2014
Messages
7,374
Reaction score
2,043
Points
113

bizzon

Client
Joined
Sep 8, 2015
Messages
1,120
Reaction score
135
Points
63
Как эмулировать "правой кнопкой мыши" ---> "Сохранить картинку как"?
 

Nord

Client
Joined
Mar 22, 2012
Messages
2,432
Reaction score
1,494
Points
113

bizzon

Client
Joined
Sep 8, 2015
Messages
1,120
Reaction score
135
Points
63
Хороший вариант, но "правой кнопкой мыши" ---> "Сохранить картинку как" сохраняет с прозрачным фоном как и нужно в png, а в предложенных почему-то с черным фоном.
https://roboto-worker.blogspot.com/
 

webbaster

Client
Joined
Jul 19, 2013
Messages
140
Reaction score
15
Points
18
много действий
Спасибо, все работает. Кликовая капча яндекса - стали задание в canvas выдавать негодяи ))
 

санчил

Client
Joined
Apr 15, 2016
Messages
344
Reaction score
60
Points
28
много действий
подскажите пожалуйста как в строку эту переменную вставить
bitmap.Save(@"C:\test.png", ImageFormat.Png);

путь из переменной брать?
 

Sherminator

Client
Joined
Sep 10, 2021
Messages
1,665
Reaction score
957
Points
113
подскажите пожалуйста как в строку эту переменную вставить
bitmap.Save(@"C:\test.png", ImageFormat.Png);

путь из переменной брать?
bitmap.Save(project.Variables["ИМЯ ПЕРЕМЕННОЙ"].Value, ImageFormat.Png);
 
  • Thank you
Reactions: санчил

санчил

Client
Joined
Apr 15, 2016
Messages
344
Reaction score
60
Points
28

санчил

Client
Joined
Apr 15, 2016
Messages
344
Reaction score
60
Points
28
подскажите пожалуйста как в строку вставить номер совпадения картинки , к примеру на странице 10 картинок.
HtmlElement he = instance.ActiveTab.FindElementByTag("canvas",0);

или по //img[@src="/apps/kaptcha.jpg"]
 

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