Почему при C# скриншоте - страница прокручивается в самый верх?

Gunjubasik

Client
Регистрация
30.05.2019
Сообщения
3 495
Благодарностей
1 304
Баллы
113
Доброго времени. Нужно сделать скриншот обьекта на странице по координатам:
C#:
string PathOut = project.Directory + @"\testimg.png";
ZennoPoster.ImageProcessingCropFromScreenshot(instance.Port, PathOut, 800, 1400, 800, 200, "pixel");
Все бы ничего, но если обьект находится внизу страницы и мы прокрутили страницу в самый низ, допустим гугл поиск - выдача, то при использовании снипета выше, мало того, что браузер моргает 2 раза, будто вместо того, что бы сделать 1 скрин, он делает его 2 раза, так еще и при скрине - возвращает страницу с нижней части сайта в самый вверх, что в результате приводит к тому, что область скрина будет с самой верхней части сайта, а не та область низа сайта, которую мы пытались отскринить. Как же пофиксить такую проблему, что бы скрин делался ровно там, где ему указали, без каких либо скачков прокрутки в самый верх? Возможно кто знает какуе-то C# библиотеку, с помощью которой можно по координатам сделать корректный скрин?
 
Последнее редактирование:

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 712
Баллы
113
Доброго времени. Нужно сделать скриншот обьекта на странице по координатам:
C#:
string PathOut = project.Directory + @"\testimg.png";
ZennoPoster.ImageProcessingCropFromScreenshot(instance.Port, PathOut, 800, 1400, 800, 200, "pixel");
Все бы ничего, но если обьект находится внизу страницы и мы прокрутили страницу в самый низ, допустим гугл поиск - выдача, то при использовании снипета выше, мало того, что браузер моргает 2 раза, будто вместо того, что бы сделать 1 скрин, он делает его 2 раза, так еще и при скрине - возвращает страницу с нижней части сайта в самый вверх, что в результате приводит к тому, что область скрина будет с самой верхней части сайта, а не та область низа сайта, которую мы пытались отскринить. Как же пофиксить такую проблему, что бы скрин делался ровно там, где ему указали, без каких либо скачков прокрутки в самый верх? Возможно кто знает какуето C# библиотеку, с помощью которой можно по координатам сделать корректный скрин?
раз моргает, значит Хромиум, а раз Хромиум, то у него просто нереальное количество багов именно с графической частью и пересчетами координат.
в багах я постил по графике Хромиума недавно. можно ознакомиться.
 

Gunjubasik

Client
Регистрация
30.05.2019
Сообщения
3 495
Благодарностей
1 304
Баллы
113
раз моргает, значит Хромиум, а раз Хромиум, то у него просто нереальное количество багов именно с графической частью и пересчетами координат.
в багах я постил по графике Хромиума недавно. можно ознакомиться.
В том то и проблема, что в CEF та же беда.
 

Astraport

Client
Регистрация
01.05.2015
Сообщения
4 972
Благодарностей
4 425
Баллы
113
То что моргает тоже замечал, но вроде на результат это моргание не влияет.
А то что скролит обратно вверх, этого нет у меня, сам такие же скрины делаю, но юзаю стандартный кубик с обрезкой по видимой части. Попробуй его для теста.
 

Gunjubasik

Client
Регистрация
30.05.2019
Сообщения
3 495
Благодарностей
1 304
Баллы
113
То что моргает тоже замечал, но вроде на результат это моргание не влияет.
А то что скролит обратно вверх, этого нет у меня, сам такие же скрины делаю, но юзаю стандартный кубик с обрезкой по видимой части. Попробуй его для теста.
Я не понимаю что у вас там за мистика, что все нормально скринит и не перемещается картинка вверх, но у меня проблема проявляется на 7.7.1 и на версиях ниже.

Прикрепляю шаблон для тестов, который покажет, что если мы находимся внизу сайта и делаем скрин любой области - зенка решает что ей пора в верхнюю часть сайта и перемещается ровно вверх, вне зависимости, то ли это кубик оберзка изображений, то ли C#! Можно было бы сказать - что - ну пусть себе перемещается...какая разница? Скрин то сделает нижней части гугла...Так вот дело в том, что если сайт многослойный и кубик скрина соизволит подняться вверх сайта, вместо того, что бы оставаться в нижней части сайта, то координаты нашего обьекта поедут и сделается кривой скрин в отличии от гугл сайта, где чудом удается скринить нужную облать, хоть и экран браузера перемещается в самый верх сайта. Но повторюсь, если сайт многослойный - то такие косяки с перемещением вверх не проходит мимо и делается все криво.


@Zymlex Может вы сможете, пожалуйста, прокомментировать момент, что при скрине - сайт сам по себе прокручивается вверх, хотя ему сказали оставаться внизу и делать скрин ровно там где его оставили? Может посоветуете, пожалуйста, еще методы скринов, что бы сайт не поднимался сам вверх по своей воле?


Версия прикрепленного проекта 7.7.1
 

Вложения

  • 13,4 КБ Просмотры: 58

Gunjubasik

Client
Регистрация
30.05.2019
Сообщения
3 495
Благодарностей
1 304
Баллы
113
Хотя если запустить хромиум, то в гугле проблем по передвижению браузера не наблюдаю и картинка остаетсят на месте, после единоразового скачка вверх области сайта и возврщается после скрина назад, но проблема с координатами остается, так как при скрине происходит скачек экрана вверх браузера, если сайт многослойный, координаты обьекта которые ввели - после скрина не совпадут и скрин сделается криво, так как при скрине было секундное перемещение видимого окна браузера вверх сайта.
 
Последнее редактирование:

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 712
Баллы
113
в кубике используются абсолютные координаты, от самого начала страницы.
Все он четко скринит в CEF. какие задали координаты, те и отработал.
Если указать скринить видимую область, то отскринит видимую.
возвращается в начало, скорее всего что бы получить валидную на момент скрина страницу.
Всякие футеры и плавающие окна, скорее всего будут где нибудь внизу. это проверять надо, сделав скрин всего сайта без обрезки.
Я вообще таким скрином не пользуюсь, всегда нахожу элемент и на через его методы получаю скрин.
на крайняк, когда был баг в CEF, делал скрин //html и потом уже вырезал по координатам элемента. но сейчас это уже не актуально.
 
  • Спасибо
Реакции: Sho

Gunjubasik

Client
Регистрация
30.05.2019
Сообщения
3 495
Благодарностей
1 304
Баллы
113
в кубике используются абсолютные координаты, от самого начала страницы.
Все он четко скринит в CEF. какие задали координаты, те и отработал.
Если указать скринить видимую область, то отскринит видимую.
возвращается в начало, скорее всего что бы получить валидную на момент скрина страницу.
Всякие футеры и плавающие окна, скорее всего будут где нибудь внизу. это проверять надо, сделав скрин всего сайта без обрезки.
Я вообще таким скрином не пользуюсь, всегда нахожу элемент и на через его методы получаю скрин.
на крайняк, когда был баг в CEF, делал скрин //html и потом уже вырезал по координатам элемента. но сейчас это уже не актуально.
Я тоже нахожу координаты обьекта, после чего по этим координатам делаю скрин, но повторюсь, если сайт многослойный, например "вайлдберисс - показать все отзывы", то при прокрутке допустим на самый нижний отзыв, что бы найти нужный - получаем его координаты через хпаз обьекта и по этим координатам делаем скрин. Сайт передвинится в самый верх странички и скрин сделается по старым координатам, но уже верхней части сайта, так как сайт сдвинулся вверх и координаты нужного обьекта изменились.

И если не секрет, есть видимая область координат, то как получить невидимую область координат, допустим нижней части сайта и после чего сделать скрин конкретно нужного обьекта, если не по абсолютным координатам и видимости, то как по другому то?
 
Последнее редактирование:

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 712
Баллы
113
И если не секрет, есть видимая область координат, то как получить невидимую область координат, допустим нижней части сайта и после чего сделать скрин конкретно нужного обьекта, если не по абсолютным координатам и видимости, то как по другому то?
писал же выше, скринить сам элемент, через его методы

96240
 
  • Спасибо
Реакции: djaga и Gunjubasik

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