所以我有一个小的jrxml:
这两个图像是 firebird 数据库中的字段类型 BLOB ,为了正确显示它,我在图像表达式上使用了 new ByteArrayInputStream((byte[])$F{FOFU}) 。
在阅读了一点之后,我认为旋转这个图像的唯一方法是在 java 上以编程方式进行,我不知道该怎么做,即使在这里和其他地方阅读了一些帖子。谁能帮我这个 ?
所以我有一个小的jrxml:
这两个图像是 firebird 数据库中的字段类型 BLOB ,为了正确显示它,我在图像表达式上使用了 new ByteArrayInputStream((byte[])$F{FOFU}) 。
在阅读了一点之后,我认为旋转这个图像的唯一方法是在 java 上以编程方式进行,我不知道该怎么做,即使在这里和其他地方阅读了一些帖子。谁能帮我这个 ?
private byte[] rotateImage(byte[] originalImageAsBytes , double radians) throws InternalException {
ByteArrayOutputStream rotatedImageStream = null;
try {
BufferedImage originalImage = ImageIO.read(new ByteArrayInputStream(originalImageAsBytes)); // read the original image
AffineTransform rotationTransform = new AffineTransform();
rotationTransform.rotate(radians, originalImage.getWidth() / 2.0 , originalImage.getHeight() / 2.0);
AffineTransformOp rotationTransformOp =
new AffineTransformOp(rotationTransform , AffineTransformOp.TYPE_NEAREST_NEIGHBOR);
BufferedImage rotatedImage = rotationTransformOp.filter(originalImage,null);
rotatedImageStream = new ByteArrayOutputStream();
ImageIO.write(rotatedImage, "jpg" , rotatedImageStream);
} catch (IOException e) {
throw new InternalException(e);
}
return rotatedImageStream.toByteArray();
}
在 Jasper 上我正在做
new ByteArrayInputStream(path.to.rotateImage((byte[])$F{IMAGE}, 100.00))
作为形象表达。它的工作。