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

bizzon

Client
Регистрация
08.09.2015
Сообщения
1 103
Благодарностей
132
Баллы
63
На сайте есть Canvas картинка, в коде нет ссылки на сохранение. Но в браузере возможность есть через "правой кнопкой мыши" ---> "Сохранить картинку как".
Как реализовать этот вариант ---> "Сохранить картинку как"?
 

amyboose

Client
Регистрация
21.04.2016
Сообщения
2 312
Благодарностей
1 191
Баллы
113
отрисовать через javascript
подробнее в гугле можно найти
 

Yuriy Zymlex

Moderator
Команда форума
Регистрация
24.10.2016
Сообщения
6 514
Благодарностей
3 368
Баллы
113
Последнее редактирование:

bizzon

Client
Регистрация
08.09.2015
Сообщения
1 103
Благодарностей
132
Баллы
63

Yuriy Zymlex

Moderator
Команда форума
Регистрация
24.10.2016
Сообщения
6 514
Благодарностей
3 368
Баллы
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();
}
Вариант под канвас (пост ниже).
 
  • Спасибо
Реакции: volody00

Alex733

Client
Регистрация
27.11.2017
Сообщения
330
Благодарностей
243
Баллы
43
Только DrawAsBitmap не true - а false - ТС ищет canvas, а не img.
 

bizzon

Client
Регистрация
08.09.2015
Сообщения
1 103
Благодарностей
132
Баллы
63
Только DrawAsBitmap не true - а false - ТС ищет canvas, а не img.
Sorry, так как в конечном варианте это должно в коде выглядеть?

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

Alex733

Client
Регистрация
27.11.2017
Сообщения
330
Благодарностей
243
Баллы
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 на странице, но должно и этого хватить.
 
  • Спасибо
Реакции: Yuriy Zymlex

bizzon

Client
Регистрация
08.09.2015
Сообщения
1 103
Благодарностей
132
Баллы
63

Alex733

Client
Регистрация
27.11.2017
Сообщения
330
Благодарностей
243
Баллы
43
Посмотрите на какую строчку ругается и добавьте туда - ;
 
  • Спасибо
Реакции: bizzon

bizzon

Client
Регистрация
08.09.2015
Сообщения
1 103
Благодарностей
132
Баллы
63
Всем ОГРОМНОЕ СПАСИБО....
Я совсем Нуб, и лоханулся, все писал в экшен Java
Пока Zymlex все не разрулил, Ему персональное спасибо!!
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113
а чё разрулил, код в студию,
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113
Юзинг хорош, когда можно забить на происходящее в нём.
Тут всё же, это может быть неуместно (если каждый скрин необходим, как в случае капч, например).
так тру кейч на ошибку, там типо ошибок не дожно быть,зачем ?
 

bizzon

Client
Регистрация
08.09.2015
Сообщения
1 103
Благодарностей
132
Баллы
63
а чё разрулил, код в студию,
Все сохраняет отлично, да вот беда, без прозрачного фона, а "правой кнопкой мыши" ---> "Сохранить картинку как" с прозрачным, как и нужно.
Может что-то можно сделать и здесь?
 

Вложения

  • Спасибо
Реакции: eee

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113
всмысле ты одну картиинку пытаешщься сохоранить ?
 

bizzon

Client
Регистрация
08.09.2015
Сообщения
1 103
Благодарностей
132
Баллы
63
ну да общую
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
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 на странице, но должно и этого хватить.
много действий
 
  • Спасибо
Реакции: санчил и webbaster

bizzon

Client
Регистрация
08.09.2015
Сообщения
1 103
Благодарностей
132
Баллы
63
"правой кнопкой мыши" ---> "Сохранить картинку как" - все делает как надо в один клик.
Нужно, наверное, в этом направлении идти.
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113
"правой кнопкой мыши" ---> "Сохранить картинку как" - все делает как надо в один клик.
Нужно, наверное, в этом направлении идти.
что зенка предлагает ?
имя файла ?
или системноно сохраняется как принимает винда
винда накоппирует
в твоём случае ошибка
 

bizzon

Client
Регистрация
08.09.2015
Сообщения
1 103
Благодарностей
132
Баллы
63

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113

bizzon

Client
Регистрация
08.09.2015
Сообщения
1 103
Благодарностей
132
Баллы
63
Как эмулировать "правой кнопкой мыши" ---> "Сохранить картинку как"?
 

Nord

Client
Регистрация
22.03.2012
Сообщения
2 406
Благодарностей
1 472
Баллы
113

bizzon

Client
Регистрация
08.09.2015
Сообщения
1 103
Благодарностей
132
Баллы
63
Хороший вариант, но "правой кнопкой мыши" ---> "Сохранить картинку как" сохраняет с прозрачным фоном как и нужно в png, а в предложенных почему-то с черным фоном.
https://roboto-worker.blogspot.com/
 

webbaster

Client
Регистрация
19.07.2013
Сообщения
125
Благодарностей
10
Баллы
18

санчил

Client
Регистрация
15.04.2016
Сообщения
334
Благодарностей
60
Баллы
28

Sherminator

Client
Регистрация
10.09.2021
Сообщения
1 248
Благодарностей
673
Баллы
113
  • Спасибо
Реакции: санчил

санчил

Client
Регистрация
15.04.2016
Сообщения
334
Благодарностей
60
Баллы
28

санчил

Client
Регистрация
15.04.2016
Сообщения
334
Благодарностей
60
Баллы
28
подскажите пожалуйста как в строку вставить номер совпадения картинки , к примеру на странице 10 картинок.
HtmlElement he = instance.ActiveTab.FindElementByTag("canvas",0);

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

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