Я пытаюсь написать программу, которая просто создает изображение из текста (например, напишите «привет» на белом квадрате и сохраните изображение), что звучит просто, но это нужно сделать быстро. Я попробовал библиотеку Java2D, но для рисования на BufferedImage требуется ~ 2 секунды, чтобы просто нарисовать изображение, даже не сохранять и не отображать его. Я также пытался использовать генераторы CAPTCHA на Java, но они занимают слишком много времени (5 секунд).Java: Самый быстрый способ рисования текста?
Это кажется довольно простой задачей просто нарисовать текст, но я расстроен тем, что не могу сделать это быстрее, чем на 2 секунды.
Есть ли способ, которым я могу сделать это быстрее на своей машине с помощью некоторых параметров командной строки (например, выделение большего объема памяти или приоритета)? Есть ли определенная библиотека Java, которую я должен использовать, или какая-то странная причуда для Java2D, о которой я должен знать, чтобы ускорить работу?
Это моя вся программа. Я бегу это в Eclipse:
import java.awt.*;
import java.awt.image.BufferedImage;
public class SimpleGraphics {
public static void main(String[] args) {
long time = System.currentTimeMillis();
String message = "Hello world";
int width = 100;
int height = 100;
BufferedImage img = new BufferedImage(width, height, BufferedImage.TYPE_BYTE_GRAY);
Graphics2D graphics = img.createGraphics();
graphics.setColor(Color.black);
graphics.setFont(new Font("TimesRoman", Font.BOLD, 12));
FontMetrics fontMetrics = graphics.getFontMetrics();
int stringWidth = fontMetrics.stringWidth(message);
int stringHeight = fontMetrics.getAscent();
graphics.drawString(message, (width - stringWidth)/2, height/2 + stringHeight/4);
System.out.println(System.currentTimeMillis() - time); //consistently ~2 seconds
}
}
Для выполнения каких-либо основных графических работ или ввода-вывода файлов не требуется 2 секунды. Отправьте свой [SSCCE] (http://sscce.org/), который демонстрирует проблему, чтобы мы могли точно видеть, что вы делаете. Я не вижу ничего плохого в базовом коде, который вы опубликовали, но важно, как вы используете код. – camickr
Этот код буквально все внутри моего основного метода. Я запускаю это в Eclipse. – Booley
Ну тогда буквально скопируйте весь код, разместив его на форуме. Например, как вы вычисляете «2 секунды»? Если мы не сможем запустить код, мы не знаем, является ли проблема вашим кодом или вашей машиной. В течение 2 секунд загрузка JVM не будет фактическим временем рисования. – camickr