Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

Нужно сделать скриншот по координатам и сохранить картинку в высоким расширением

screenshot
Теги: #<Tag:0x00007f7b68d86130>

(Денис Медведев) #1
Bitmap printscreen = new Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height);
Graphics graphics = Graphics.FromImage(printscreen as Image);
graphics.CopyFromScreen(new Point(457, 215), new Point(), printscreen.Size);
printscreen.SetResolution(2575,3528);
printscreen.Save(@"C:\printscreen.jpg", ImageFormat.Jpeg);

Не работает :frowning: Не понимаю что тут не так…
В итоге должна остаться картинка высокого разрешения, сделанная по координатам.


(Yuriy Tretyakov) #2

see here: http://stackoverflow.com/questions/19184265/net-bitmap-save-ignores-bitmap-setresolution-on-windows-7

похоже проблема именно в printscreen.SetResolution(2575,3528); попробуй без него.
в нашем проекте работает код (см. ниже) он снимает скриншот и возвращает битмап, вполне нормального качества, без ручной установки сетрезолшин
public static Bitmap CaptureScreenRect(Rect rectToCopy)
{
Bitmap image = new Bitmap(Convert.ToInt32(rectToCopy.Width), Convert.ToInt32(rectToCopy.Height),
PixelFormat.Format24bppRgb);
{
using (Graphics gfx=Graphics.FromImage(image))
{
gfx.CopyFromScreen(Convert.ToInt32(rectToCopy.X), Convert.ToInt32(rectToCopy.Y), 0, 0, new System.Drawing.Size(Convert.ToInt32(rectToCopy.Width), Convert.ToInt32(rectToCopy.Height)));

            }
            
        }
        return image;
   }

(Yuriy Tretyakov) #3

еще одно: можно сохранять битмап в PNG формат, он качественее чем jpg и легче чем bmp :wink:


(Денис Медведев) #4

Большое спасибо)