LINUX.ORG.RU
ФорумTalks

Хочу написать скриншотер

 , , , ,


2

3

Привет. Увидел новость про скриншотер и решил написать свой с минимальным набором функций.
Там куча проблем граблей с wayland. На чем писать чтобы не было зависимости от оконного менеджера? QT, GTK, boost?
Начну как лабораторки по учебе а потом может и линукс примут пакетом.

Ответ на: комментарий от Mirage1_

Если вы про ESC/P, то да, было такое. Но и HP свой HPGL так же документировало.

anc ★★★★★
()
Ответ на: комментарий от cocucka_B_TECTE

Можешь на расте запилить, будет еще круче.

Тьфу @^&.

И если уж говорить про фреймворки-бесфреймворки, то чтобы не повторяться.

dimgel ★★★★★
()
Последнее исправление: dimgel (всего исправлений: 1)

Лет 5 назад были такие мюсли, но поглядел на Скриншотер на оффтопике. Яндекс диск умеет делать, потом и Ябраузер научился. Сейчас все уже скриншотят. KDE 100 лет назад уже умели. GNU / Linux Mint даже на xfce умеет в скриншоты.
К чому же это я?... ах, да - НЕ НУЖНО!!!

xwicked ★★☆
()
Ответ на: комментарий от papin-aziat

Даёшь systemd-shot!

Даёшь лялих в systemd! А серьёзно, может ли systemd в будущем заменить ядро, когда в него всё запихают? 🤔

xwicked ★★☆
()
Ответ на: комментарий от cocucka_B_TECTE

который будет работать в пространстве ядра и по нажатию клавиши PrintScreen сбрасывать видеобуфер на диск в формате PNG.

Нажатие клавиши не надо. И локальное хранение не надо. Надо автоматически с регулярными интервалами и сразу отсылкой товарищу майору.

Smacker ★★★★★
()

Привет. Увидел новость про скриншотер и решил написать свой с минимальным набором функций.

Короче тоже подспудно была эта идея, который раз увидел пост в трекере и несмог себя сдержать, загуглить и «написать» на жаве. Под вендой заработало. Потестите плиз на линуксе, с иксами и вайландом.

package Test;

import java.awt.AWTException;
import java.awt.HeadlessException;
import java.awt.Rectangle;
import java.awt.Robot;
import java.awt.Toolkit;
import java.awt.image.BufferedImage;
import java.io.*;

import javax.imageio.ImageIO;
import javax.swing.JFrame;

public class ScrSht {
		public static void main(String[] args) throws IOException, HeadlessException, AWTException, InterruptedException {
		if(args[1] != null) Thread.sleep(Long.valueOf(args[1])); //спим Long.valueOf(args[1]) перед снимком.
			saveScreenshot(args[0]);

	}
	/**
	 * честно с копипащено с https://ru.stackoverflow.com/questions/1512808/%D0%9A%D0%B0%D0%BA-%D1%81%D0%B4%D0%B5%D0%BB%D0%B0%D1%82%D1%8C-%D1%81%D0%BA%D1%80%D0%B8%D0%BD%D1%88%D0%BE%D1%82-java-swing-%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%BE%D0%B9
	 * @param pngFilename передаём в этот параметр первый аргумент arg[0] в нём указывайте имя файла в main().
	 * @throws IOException
	 * @throws HeadlessException
	 * @throws AWTException
	 */
	public static void saveScreenshot(String pngFilename) throws IOException, HeadlessException, AWTException {
	    saveScreenshot(pngFilename, new Rectangle(Toolkit.getDefaultToolkit().getScreenSize()));
	}

	public static void saveFrameImage(String pngFilename, JFrame frame) throws IOException, AWTException {
	    saveScreenshot(pngFilename, frame.getBounds());
	}


	private static void saveScreenshot(String pngFilename, Rectangle rect) throws IOException, AWTException {
	    BufferedImage image = new Robot().createScreenCapture(rect);
	    ImageIO.write(image, "png", new File(pngFilename));
	}

}

Запускается

java .\ScrSht.java 11.png 1000

1 аргумент имя файла, второй аргумент количество миллисекунд до снимка.

Ygor ★★★★★
()
Последнее исправление: Ygor (всего исправлений: 1)
Ответ на: комментарий от cocucka_B_TECTE

Да что ты всё лезешь-то,

Тебя забыл спросить.

мы говорим про модуль ядра.

Ну и говори себе молча.

dimgel ★★★★★
()
Ответ на: комментарий от dimgel

Сам до меня докопался и крысится теперь? Мдэ, воистину говорят, использование ломбока разжижжает мозг.

cocucka_B_TECTE
()
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)