Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JasperReports-显示tiff';s存储在数据库中的BLOB中_Java_Jasper Reports_Jpeg_Tiff_Image Conversion - Fatal编程技术网

Java JasperReports-显示tiff';s存储在数据库中的BLOB中

Java JasperReports-显示tiff';s存储在数据库中的BLOB中,java,jasper-reports,jpeg,tiff,image-conversion,Java,Jasper Reports,Jpeg,Tiff,Image Conversion,我想显示一些存储在oracle数据库BLOB中的tiff。我只是尝试使用im4java将它们从tiff转换为jpg或png,但没有成功。也许有可能在Jasper中显示.tiff和其他img数据类型而不进行转换?!或者,如果没有,是否有人有一个详细的解决方案如何转换它们?(我需要配置哪个映像类,如何在scriptlet中实现等) 谢谢大家 IMOperation op = new IMOperation(); op.addImage(); op.addImage

我想显示一些存储在oracle数据库BLOB中的tiff。我只是尝试使用im4java将它们从tiff转换为jpg或png,但没有成功。也许有可能在Jasper中显示.tiff和其他img数据类型而不进行转换?!或者,如果没有,是否有人有一个详细的解决方案如何转换它们?(我需要配置哪个映像类,如何在scriptlet中实现等)

谢谢大家

      IMOperation op = new IMOperation();
      op.addImage();
      op.addImage(); 

      ConvertCmd convert = new ConvertCmd();
      convert.run(op, new Object[]{inputImage.getAbsolutePath(), outputImage.getAbsolutePath()});
    return outputImage;`

解决了这个问题,下面是我使用jai-imageIO.jar将tiff转换为jpg的代码:

导入java.awt.image.buffereImage; 导入java.io.ByteArrayInputStream; 导入java.io.ByteArrayOutputStream; 导入java.io.IOException; 导入java.io.InputStream

导入javax.imageio.imageio; 导入javax.imageio.spi.iiOreRegistry

导入net.sf.jasperreports.engine.jractScriptlet; 导入net.sf.jasperreports.engine.JRScriptleException


它以什么方式不起作用?转换失败了吗?是否无法显示已转换的文件?您是否收到任何异常或错误消息?@haraldK
net.sf.jasperreports.engine.JRException:无法添加单元格。在com.jaspersoft.studio.editor.preview.actions.export.AExportA上‌​行动$3.运行(AExportA)‌​org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)上的action.java:188),原因是:net.sf.jasperreports.engine.jr异常:图像读取失败。
这是错误消息的一部分,因此我认为转换失败。我不知道如何在scriptlet中准确地实现代码,因此转换在每个细节段之前执行。。另一个问题是,不是所有的图像都是tiff,还有jpg和一些更老的img类型。。
public static InputStream convertTifToPng(InputStream inputImage)
        throws IOException, InterruptedException {
    IIORegistry registry = IIORegistry.getDefaultInstance();
    registry.registerServiceProvider(new com.sun.media.imageioimpl.plugins.tiff.TIFFImageWriterSpi());
    registry.registerServiceProvider(new com.sun.media.imageioimpl.plugins.tiff.TIFFImageReaderSpi());
    
    BufferedImage image;

    if (inputImage != null) {
        image = ImageIO.read(inputImage);
    } else {
        return null;
    }

    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    ImageIO.write(image, "jpg", baos);
    InputStream outputImage = new ByteArrayInputStream(baos.toByteArray());

    return outputImage;
}