/**
* 合并jpg
* @param fileList 要合并的jpg文件路径
* @param mergrPdfPath 合成的新路径
* @return
*/
public boolean mergePDFFilespng(List<String> fileList, String mergrPdfPath) {
boolean result = false;
// 生成新图片
BufferedImage destImage = null;
// 计算新图片的长和高
int allw = 0;int allh = 0;int allwMax = 0;int allhMax = 0;
// 获取总长、总宽、最长、最宽
try {
debugUtil = new DebugUtil(Level.INFO);
debugUtil.begin();
List<BufferedImage> listImg = new ArrayList<>();
for (int i = 0; i < fileList.size(); i++) {
File fileImg = new File(fileList.get(i));
BufferedImage img = ImageIO.read(fileImg);
allw += img.getWidth();
allh += img.getHeight();
if (img.getWidth() > allwMax) {
allwMax = img.getWidth();
}
if (img.getHeight() > allhMax) {
allhMax = img.getHeight();
}
listImg.add(img);
}
// 创建新图片
if (false) {
destImage = new BufferedImage(allw, allhMax, BufferedImage.TYPE_INT_RGB);
} else {
destImage = new BufferedImage(allwMax, allh, BufferedImage.TYPE_INT_RGB);
}
// 合并所有子图片到新图片
int wx = 0, wy = 0;
for (BufferedImage img : listImg) {
int w1 = img.getWidth();
int h1 = img.getHeight();
// 从图片中读取RGB
int[] ImageArrayOne = new int[w1 * h1];
ImageArrayOne = img.getRGB(0, 0, w1, h1, ImageArrayOne, 0, w1); // 逐行扫描图像中各个像素的RGB到数组中
if (false) { // 水平方向合并
destImage.setRGB(wx, 0, w1, h1, ImageArrayOne, 0, w1); // 设置上半部分或左半部分的RGB
} else { // 垂直方向合并
destImage.setRGB(0, wy, w1, h1, ImageArrayOne, 0, w1); // 设置上半部分或左半部分的RGB
}
wx += w1;
wy += h1;
}
File outFile = new File(mergrPdfPath);
ImageIO.write(destImage, "jpg", outFile);// 写图片
debugUtil.end();
debugUtil.writeLog("合并jpg",null);
return true;
} catch (Exception e) {
throw new RuntimeException(e);
} finally {
destImage = null;
System.gc();
}
}
图片的合并
最新推荐文章于 2023-08-06 17:48:55 发布