Canvas javafx图形输出质量

Canvas javafx图形输出质量,canvas,javafx,Canvas,Javafx,我正在使用JavaFX创建Android应用程序分数的预览图像 然而,输出的质量并没有我想要的那么好,即边缘模糊 以下是一个例子: 为了产生这种效果,我创建了一个特定大小的画布- Canvas cv = new Canvas(iWidth, iHeight); 然后我把比分打成平局- score.draw(cv); 然后将图像写入jpeg文件- Image fxImage = cv.getJavaFxCanvas().snapshot(new SnapshotParameters(), nu

我正在使用JavaFX创建Android应用程序分数的预览图像

然而,输出的质量并没有我想要的那么好,即边缘模糊

以下是一个例子:

为了产生这种效果,我创建了一个特定大小的画布-

Canvas cv = new Canvas(iWidth, iHeight);
然后我把比分打成平局-

score.draw(cv);
然后将图像写入jpeg文件-

Image fxImage = cv.getJavaFxCanvas().snapshot(new SnapshotParameters(), null);
BufferedImage bufimg = SwingFXUtils.fromFXImage(fxImage, null);
BufferedImage bufImgRgb = new BufferedImage(bufimg.getWidth(), bufimg.getHeight(), BufferedImage.OPAQUE);

Graphics2D graphics = bufImgRgb.createGraphics();
graphics.drawImage(bufimg, 0, 0, null);
ImageIO.write(bufImgRgb, "jpg", new File(m_strDefaultOutputDir + "\\test.jpg"));
graphics.dispose();
我已经搜索过了,但无法看到需要做什么来增加绘制图像的清晰度

例如,要绘制文本,我正在调用

graphicscontext.fillText(m_strText, x, y);
如果我添加对strokeText的调用,文本就会变得臃肿,而不会明显改善其清晰度

线是用线画的

graphicscontext.strokeLine(fX1, fY1, fX2, fY2);
将笔划宽度设置为1后,线条仍然不清晰


如何生成高质量的图像?

jpg是有损的,您试过png吗?另请参见[如何在JavaFX2.2中绘制清晰、不透明的发际线?是的@jewelsea,我已经看到了这一点,但找不到如何使其适应原始GraphicsContext调用。