Я использую порт Java ImageMagick под названием JMagick. Мне нужно иметь возможность создавать новое изображение и записывать в него произвольный фрагмент текста. Документы очень плохие и что мне удалось получить далека заключается в том, чтобы писать текст в изображение, которое исходит от IO.Also, во всех примерах, которые я нашел, это похоже на первую операцию, прежде чем записывать новые данные изображения, всегда загружает существующее изображение в экземпляр ImageInfo. Как я могу создать изображение с нуля с помощью JMagick, а затем написать в него текст?Создать изображение с нуля с помощью JMagick
Вот что я делаю сейчас:
try {
ImageInfo info = new ImageInfo();
info.setSize("512x512");
info.setUnits(ResolutionType.PixelsPerInchResolution);
info.setColorspace(ColorspaceType.RGBColorspace);
info.setBorderColor(PixelPacket.queryColorDatabase("red"));
info.setDepth(8);
BufferedImage img = new BufferedImage(512,512,BufferedImage.TYPE_4BYTE_ABGR);
byte[] imageBytes = ((DataBufferByte) img.getData().getDataBuffer()).getData();
MagickImage mimage = new MagickImage(info,imageBytes);
DrawInfo aInfo = new DrawInfo(info);
aInfo.setFill(PixelPacket.queryColorDatabase("green"));
aInfo.setUnderColor(PixelPacket.queryColorDatabase("yellow"));
aInfo.setOpacity(0);
aInfo.setPointsize(36);
aInfo.setFont("Arial");
aInfo.setTextAntialias(true);
aInfo.setText("JMagick Tutorial");
aInfo.setGeometry("+40+40");
mimage.annotateImage(aInfo);
mimage.setFileName("text.jpg");
mimage.writeImage(info);
} catch (MagickException ex) {
Logger.getLogger(LWJGL_IDOMOO_SIMPLE_TEST.class.getName()).log(Level.SEVERE, null, ex);
}
Это не работает, виртуальная машина врезается с нарушением доступа, как это, вероятно, ожидает входного изображения от IO.
Вы наконец решили эту проблему? – jarandaf
Нет. Я оставил его. Переведено на C++ –