iReport内嵌图片

如题,内嵌图片到iReport内

 

1。通过以下代码,将图片文件转化为 Base64 字串

     (也可以自己在通过网上的一些免费工具进行转化)

========================================================================

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;

public class TestClass {

 /**
  * @param args
  */
 public static void main(String[] args) {
  String strImg = "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";
  GenerateImage(strImg, "D:\\temp\\testOut.jpg");

        System.out.println(GetImageStr("D:\\temp\\testImage.jpg"));
 }

 public static String GetImageStr(String imgFilePath) {
        byte[] data = null;
       
        // 读取图片字节数组
        try {
            InputStream in = new FileInputStream(imgFilePath);
            data = new byte[in.available()];
            in.read(data);
            in.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
       
        // 对字节数组Base64编码
        BASE64Encoder encoder = new BASE64Encoder();
        return encoder.encode(data);// 返回Base64编码过的字节数组字符串
    }

 public static boolean GenerateImage(String imgStr, String imgFilePath) {// 对字节数组字符串进行Base64解码并生成图片
        if (imgStr == null) // 图像数据为空
            return false;
        BASE64Decoder decoder = new BASE64Decoder();
        try {
            // Base64解码
            byte[] bytes = decoder.decodeBuffer(imgStr);
//            for (int i = 0; i < bytes.length; ++i) {
//                if (bytes[i] < 0) {// 调整异常数据 (测试发现没有这个调整,图片出来也是没有问题的)
//                 System.out.println("bytes[" + i + "]:" + bytes[i]);
//                    bytes[i] += 256;
//                }
//            }
            // 生成图片
            OutputStream out = new FileOutputStream(imgFilePath);
            out.write(bytes);
            out.flush();
            out.close();
            return true;
        } catch (Exception e) {
            return false;
        }
    }
}

========================================================================

 

2。添加一个参数(Parameter),属性定义如下:

    Name: PAR_IMAGE_BASE64
    Parameter Class: java.lang.String
    Default Value Expression: "Base64字串"

 

3。添加一个图片(Image)元素,属性定义如下:

    Image Expression: javax.imageio.ImageIO.read(new ByteArrayInputStream(new org.apache.commons.codec.binary.Base64().decodeBase64($P{PAR_IMAGE_BASE64}.getBytes("UTF-8"))))

 

    Expression Class: java.awt.Image

 

就这么简单!!!

你可能感兴趣的:(IREPORT)