-
2021-03-12 10:22:37
将两张图片合成一张新的图片
/**
* 图片合成
*
* @param backgroundPath 底图
* @param smallPath 小图
* @param type 生成图片类型jpg,png...
* @param resultPath 生成图片保存路径
*/
public static void image(String backgroundPath, String smallPath, String type, String resultPath) {
try {
Assert.hasText(backgroundPath, "底图路径为空");
Assert.hasText(smallPath, "小图路径为空");
BufferedImage small = getBufferedImageFromUrl(smallPath);
BufferedImage image = getBufferedImageFromUrl(backgroundPath);
//生成画笔
Graphics g = image.getGraphics();
g.drawImage(small, 230, 600,
small.getWidth()*2, small.getHeight()*2, null);
ImageIO.write(image, type, new File(resultPath));
} catch (IOException e) {
throw new RuntimeException("合成图片失败", e);
}
/**
* 根据图片url获取图片
*
* @param url
* @return
* @throws IOException
*/
private static BufferedImage getBufferedImageFromUrl(String url) throws IOException {
if (url.startsWith("https://") || url.startsWith("http://")) {
return ImageIO.read(new URL(url));
} else {
return ImageIO.read(new File(url));
}
}
测试类
public static void main(String[] args) {
image("xxx", "xxx", "png", "xxx");
}
更多相关内容 -
java多张图片合成,图片拼接,图片上写字
2018-01-20 16:11:10图片工具类(多张图片合成,图片拼接,图片上写字),java语言实现 -
Java将多张图片合成为一张图像.rar
2019-07-10 09:45:02Java将多张图片合成为一张,类似于PhotoShop中的合成图片,将两张图片合成输出为一张JPG,两幅图像叠加在一起,这是个比较基础的Java图像合成的例子。在JAVA中实现图片合成,本例的实现核心代码如下: InputStream... -
java实现图片合成功能,两张图片合成一张
2021-05-08 14:06:23将这两张图片合成一张图片到本地,代码如下: package org.example.test; import javax.imageio.ImageIO; import java.awt.*; import java.awt.geom.AffineTransform; import java.awt.image.BufferedImage; import...首先弄两张图片,如下:
将这两张图片合成一张图片到本地,代码如下:
package org.example.test; import javax.imageio.ImageIO; import java.awt.*; import java.awt.geom.AffineTransform; import java.awt.image.BufferedImage; import java.awt.image.ColorModel; import java.awt.image.WritableRaster; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; /** * 把两张图片合并一张 */ public class Picture { /** * 压缩图片 */ private static BufferedImage resize(BufferedImage source, int targetW, int targetH) { // targetW,targetH分别表示目标长和宽 int type = source.getType(); BufferedImage target = null; int width = source.getWidth(); int height = source.getHeight(); double sx = (double) targetW / width; double sy = (double) targetH / height; // 这里想实现在targetW,targetH范围内实现等比缩放 if (sx > sy) { sx = sy; targetW = (int) (sx * source.getWidth()); } else { sy = sx; targetH = (int) (sy * source.getHeight()); } if (type == BufferedImage.TYPE_CUSTOM) { ColorModel cm = source.getColorModel(); WritableRaster raster = cm.createCompatibleWritableRaster(targetW, targetH); boolean alphaPremultiplied = cm.isAlphaPremultiplied(); target = new BufferedImage(cm, raster, alphaPremultiplied, null); } else { target = new BufferedImage(targetW, targetH, type); } Graphics2D g = target.createGraphics(); // smoother than exlax: g.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY); g.drawRenderedImage(source, AffineTransform.getScaleInstance(sx, sy)); g.dispose(); return target; } /** * 待合并的两张张图必须满足这样的前提,如果水平方向合并,则高度必须相等;如果是垂直方向合并,宽度必须相等。 * * @param img1 待合并的第一张图 * @param img2 带合并的第二张图 * @return 返回合并后的BufferedImage对象 */ private static BufferedImage mergeImage(BufferedImage img1, BufferedImage img2) { int w1 = img1.getWidth(); int h1 = img1.getHeight(); int w2 = img2.getWidth(); Graphics2D graphics2D = null; // 生成新图片 BufferedImage destImage = null; destImage = new BufferedImage(w1 + w2, h1, BufferedImage.TYPE_INT_RGB); graphics2D = destImage.createGraphics(); graphics2D.drawImage(img1, 0, 0, w1, h1, null); graphics2D.drawImage(img2, w1, 0, w2, h1, null); graphics2D.dispose(); return destImage; } /** * 生成新图片到本地 */ public static void writeImageLocal(String newImage, BufferedImage img) { if (newImage != null && img != null) { try { File outputfile = new File(newImage); ImageIO.write(img, "jpg", outputfile); } catch (IOException e) { System.out.println(e.getMessage()); } } } public static void main(String[] args) throws Exception { InputStream is1 = new FileInputStream("D:\\photo\\01_皖R6982_20200620082639_1636A_77_60_1.jpg"); InputStream is2 = new FileInputStream("D:\\photo\\01_皖R6982_20200620082639_1636A_77_60_2.jpg"); BufferedImage readImg1 = ImageIO.read(is1); BufferedImage readImg2 = ImageIO.read(is2); // 图像压缩 保证每张图片大小一致 int width = readImg1.getWidth(); int height = readImg1.getHeight(); readImg2 = resize(readImg2, width, height); BufferedImage mergeImg = mergeImage(readImg1, readImg2); writeImageLocal("D:\\photo\\new.jpg", mergeImg); } }
成功合成一张图片,结果如下:
-
java 将两张相片合成一张,开发实用类
2021-02-12 09:43:43实现将两压缩好的图片 写在一张画布上思路,先成一个足够大的画布 放入两张相片以下代码需要改进import java.awt.AlphaComposite;import java.awt.Graphics2D;import java.awt.Image;import java.awt.image....实现将两压缩好的图片 写在一张画布上
思路,先成一个足够大的画布 放入两张相片
以下代码需要改进
import java.awt.AlphaComposite;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileOutputStream;
import javax.imageio.ImageIO;
public class IMG {
/**
*
* @param filesrc
* @param logosrc
* @param outsrc
* @param x 位置
* @param y 位置
*/
public void composePic(String filesrc,String logosrc,String outsrc,int x,int y) {
try {
File bgfile = new File(filesrc);
Image bg_src = javax.imageio.ImageIO.read(bgfile);
File logofile = new File(logosrc);
Image logo_src = javax.imageio.ImageIO.read(logofile);
int bg_width = bg_src.getWidth(null);
int bg_height = bg_src.getHeight(null);
int logo_width = logo_src.getWidth(null);;
int logo_height = logo_src.getHeight(null);
BufferedImage tag = new BufferedImage(bg_width, bg_height, BufferedImage.TYPE_INT_RGB);
Graphics2D g2d = tag.createGraphics();
g2d.drawImage(bg_src, 0, 0, bg_width, bg_height, null);
g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP,1.0f)); //透明度设置开始
g2d.drawImage(logo_src,x,y,logo_width,logo_height, null);
g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER)); //透明度设置 结束
FileOutputStream out = new FileOutputStream(outsrc);
ImageIO.write(tag, "jpg", out);//写图片
/* JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
encoder.encode(tag);*/
out.close();
}catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String args[]) {
Long star = System.currentTimeMillis();
IMG pic = new IMG();
pic.composePic("f:\\7.jpg","f:\\6.jpg","f:\\out.jpg",490,360);
Long end =System.currentTimeMillis();
System.out.print("time====:"+(end-star));
}
}
-
Java实现将两张图片合成一张图片,并且实现批量下载
2020-05-09 09:55:19import java.awt.*; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import java.net.URL; public class ImageMerging { private Font font = new Font("微软雅黑", ...import javax.imageio.ImageIO; import java.awt.*; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import java.net.URL; public class ImageMerging { private Font font = new Font("微软雅黑", Font.PLAIN, 46); // 添加字体的属性设置 private Graphics2D g = null; private int fontsize = 0; private int x = 0; private int y = 0; /** * 导入本地图片到缓冲区 */ public BufferedImage loadImageLocal(String imgName) { try { return ImageIO.read(new File(imgName)); } catch (IOException e) { System.out.println(e.getMessage()); } return null; } /** * 导入网络图片到缓冲区 */ public BufferedImage loadImageUrl(String imgName) { try { URL url = new URL(imgName); return ImageIO.read(url); } catch (IOException e) { System.out.println(e.getMessage()); } return null; } /** * 生成新图片到本地 */ public void writeImageLocal(String newImage, BufferedImage img) { if (newImage != null && img != null) { try { File outputfile = new File(newImage); ImageIO.write(img, "jpg", outputfile); } catch (IOException e) { System.out.println(e.getMessage()); } } } /** * 设定文字的字体等 */ public void setFont(String fontStyle, int fontSize) { this.fontsize = fontSize; this.font = new Font(fontStyle, Font.PLAIN, fontSize); } /** * 修改图片,返回修改后的图片缓冲区(只输出一行文本) */ public BufferedImage modifyImage(BufferedImage img, Object content, int x, int y) { try { int w = img.getWidth(); int h = img.getHeight(); g = img.createGraphics(); g.setBackground(new Color(255, 255, 255, 0)); g.setColor(Color.WHITE);//设置字体颜色 g.setFont(new Font("微软雅黑", Font.PLAIN, 46)); if (this.font != null) g.setFont(this.font); // 验证输出位置的纵坐标和横坐标 if (x >= h || y >= w) { this.x = h - this.fontsize + 2; this.y = w; } else { this.x = x; this.y = y; } if (content != null) { g.drawString(content.toString(), this.x, this.y); } g.dispose(); } catch (Exception e) { System.out.println(e.getMessage()); } return img; } /** * 修改图片,返回修改后的图片缓冲区(输出多个文本段) xory:true表示将内容在一行中输出;false表示将内容多行输出 */ public BufferedImage modifyImage(BufferedImage img, Object[] contentArr, int x, int y, boolean xory) { try { int w = img.getWidth(); int h = img.getHeight(); g = img.createGraphics(); g.setBackground(Color.WHITE); g.setColor(Color.RED); if (this.font != null) g.setFont(this.font); // 验证输出位置的纵坐标和横坐标 if (x >= h || y >= w) { this.x = h - this.fontsize + 2; this.y = w; } else { this.x = x; this.y = y; } if (contentArr != null) { int arrlen = contentArr.length; if (xory) { for (int i = 0; i < arrlen; i++) { g.drawString(contentArr[i].toString(), this.x, this.y); this.x += contentArr[i].toString().length() * this.fontsize / 2 + 5;// 重新计算文本输出位置 } } else { for (int i = 0; i < arrlen; i++) { g.drawString(contentArr[i].toString(), this.x, this.y); this.y += this.fontsize + 2;// 重新计算文本输出位置 } } } g.dispose(); } catch (Exception e) { System.out.println(e.getMessage()); } return img; } /** * 修改图片,返回修改后的图片缓冲区(只输出一行文本) * <p> * @param img * @return */ public BufferedImage modifyImageYe(BufferedImage img) { try { int w = img.getWidth(); int h = img.getHeight(); g = img.createGraphics(); g.setBackground(Color.WHITE); g.setColor(Color.blue);//设置字体颜色 if (this.font != null) g.setFont(this.font); //g.drawString("www.hi.baidu.com?xia_mingjian", w - 85, h - 5); g.dispose(); } catch (Exception e) { System.out.println(e.getMessage()); } return img; } public BufferedImage modifyImagetogeter(BufferedImage b, BufferedImage d, int width, int height) { try { int w = b.getWidth(); int h = b.getHeight(); g = d.createGraphics(); g.drawImage(b, width, height, w, h, null); g.dispose(); } catch (Exception e) { System.out.println(e.getMessage()); } return d; } public static void main(String[] args) { ImageMerging tt = new ImageMerging(); BufferedImage b = tt.loadImageLocal("E:\\image\\33.png"); BufferedImage d = tt.loadImageLocal("E:\\image\\44.png"); //往图片上写文件 BufferedImage aaaaaaaa = tt.modifyImage(b, "勇衣小吃店", 578, 999); tt.writeImageLocal("E:\\image\\cc.jpg", tt.modifyImagetogeter(d, aaaaaaaa, 342, 218)); //将多张图片合在一起 System.out.println("success"); } }
如果想要复用一张背景图片,并且想要每次给背景图片上面添加不同内容,那就需要将复用的背景图片进行拷贝,然后对副本进行拷贝,可以减少IO操作,提高效率。
/** * BufferedImage拷贝 * @param source * @return */ public BufferedImage copyImage(BufferedImage source) { BufferedImage copyBufferedImage = new BufferedImage(source.getWidth(), source.getHeight(), source.getType()); Graphics g = copyBufferedImage.getGraphics(); g.drawImage(source, 0, 0, null); g.dispose(); return copyBufferedImage; }
/** * 批量生成照片时,如果背景图片是一个时,对其进行拷贝在修改。 * @param pic ImageMerging 对象 * @param unitName 需要添加的文字, * @param qRCode 需要合并的图片 这里是二维码 * @param backgroundImage 背景图片 * @return */ public BufferedImage qRCodeGeneration(ImageMerging pic, String unitName, BufferedImage qRCode, BufferedImage backgroundImage, FontMetrics fontMetrics) { //FontMetrics fontMetrics= new JLabel().getFontMetrics(new Font("微软雅黑", Font.PLAIN, 46)); //计算文字的像素宽度 unitName是添加的字体 int strWidth = fontMetrics.stringWidth(unitName); //拷贝背景图片 BufferedImage copyBufferedImage = copyImage(backgroundImage); //往拷贝的背景图片上面添加文字,进行居中处理 //1400 是背景图片宽度 //1050 是设计字体距离背景图片顶部的距离 BufferedImage backgroundAndName = pic.modifyImage(copyBufferedImage, unitName, (1400 - strWidth) / 2, 1050); //将背景图片和二维码合并 BufferedImage bufferedImage = pic.modifyImagetogeter(qRCode, backgroundAndName, 342, 218); return bufferedImage; }
实现批量下载,和照片批量生成
public void generateQRCode(@RequestParam(required = false) Long unitId, HttpServletResponse response) throws Exception { long start = System.currentTimeMillis(); List<DrugUnitInfo> drugUnitList = new ArrayList<>(); if (unitId == null) { drugUnitList = drugUnitInfoService.list(); } else { DrugUnitInfo drugUnitInfo = drugUnitInfoService.getById(unitId); drugUnitList.add(drugUnitInfo); } String downloadFilename = "药品二维码"; downloadFilename = URLEncoder.encode(downloadFilename, "UTF-8"); ZipOutputStream zos = new ZipOutputStream(response.getOutputStream()); response.setContentType("application/octet-stream"); response.setHeader("Content-disposition", "attachment; filename=" + downloadFilename + ".zip"); AtomicReference<BufferedImage> encode = new AtomicReference<>(); ImageMerging pic = new ImageMerging(); FontMetrics metrics = new JLabel().getFontMetrics(new Font("微软雅黑", Font.PLAIN, 46)); BufferedImage backgroundImage = pic.loadImageLocal("E:\\image\\33.png"); drugUnitList.forEach(i -> { if (!StringUtils.isEmpty(i.getUnitNo())) { try { encode.set(QRCodeUtil.encode(host + ":" + port + urlPrefix + i.getId(), null, true)); BufferedImage bufferedImage = pic.qRCodeGeneration(pic, i.getUnitName(), encode.get(), backgroundImage, metrics); zos.putNextEntry(new ZipEntry(i.getUnitName() + ".png")); ImageIO.write(bufferedImage, "png", zos); } catch (Exception e) { e.printStackTrace(); } } }); zos.flush(); zos.close(); long end = System.currentTimeMillis(); System.out.println("执行完时间:" + (end - start)); }
完整版ImageMerging
package com.swkj.smart.market.regulation.sysmanage.utils; import javax.imageio.ImageIO; import java.awt.*; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import java.net.URL; public class ImageMerging { private Font font = new Font("微软雅黑", Font.PLAIN, 46); // 添加字体的属性设置 private Graphics2D g = null; private int fontsize = 0; private int x = 0; private int y = 0; /** * 导入本地图片到缓冲区 */ public BufferedImage loadImageLocal(String imgName) { try { return ImageIO.read(new File(imgName)); } catch (IOException e) { System.out.println(e.getMessage()); } return null; } /** * 导入网络图片到缓冲区 */ public BufferedImage loadImageUrl(String imgName) { try { URL url = new URL(imgName); return ImageIO.read(url); } catch (IOException e) { System.out.println(e.getMessage()); } return null; } /** * 生成新图片到本地 */ public void writeImageLocal(String newImage, BufferedImage img) { if (newImage != null && img != null) { try { File outputfile = new File(newImage); ImageIO.write(img, "jpg", outputfile); } catch (IOException e) { System.out.println(e.getMessage()); } } } /** * 设定文字的字体等 */ public void setFont(String fontStyle, int fontSize) { this.fontsize = fontSize; this.font = new Font(fontStyle, Font.PLAIN, fontSize); } /** * 修改图片,返回修改后的图片缓冲区(只输出一行文本) */ public BufferedImage modifyImage(BufferedImage img, Object content, int x, int y) { try { int w = img.getWidth(); int h = img.getHeight(); g = img.createGraphics(); g.setBackground(new Color(255, 255, 255, 0)); g.setColor(Color.WHITE);//设置字体颜色 g.setFont(new Font("微软雅黑", Font.PLAIN, 46)); if (this.font != null) g.setFont(this.font); // 验证输出位置的纵坐标和横坐标 if (x >= h || y >= w) { this.x = h - this.fontsize + 2; this.y = w; } else { this.x = x; this.y = y; } if (content != null) { g.drawString(content.toString(), this.x, this.y); } g.dispose(); } catch (Exception e) { System.out.println(e.getMessage()); } return img; } /** * 修改图片,返回修改后的图片缓冲区(输出多个文本段) xory:true表示将内容在一行中输出;false表示将内容多行输出 */ public BufferedImage modifyImage(BufferedImage img, Object[] contentArr, int x, int y, boolean xory) { try { int w = img.getWidth(); int h = img.getHeight(); g = img.createGraphics(); g.setBackground(Color.WHITE); g.setColor(Color.RED); if (this.font != null) g.setFont(this.font); // 验证输出位置的纵坐标和横坐标 if (x >= h || y >= w) { this.x = h - this.fontsize + 2; this.y = w; } else { this.x = x; this.y = y; } if (contentArr != null) { int arrlen = contentArr.length; if (xory) { for (int i = 0; i < arrlen; i++) { g.drawString(contentArr[i].toString(), this.x, this.y); this.x += contentArr[i].toString().length() * this.fontsize / 2 + 5;// 重新计算文本输出位置 } } else { for (int i = 0; i < arrlen; i++) { g.drawString(contentArr[i].toString(), this.x, this.y); this.y += this.fontsize + 2;// 重新计算文本输出位置 } } } g.dispose(); } catch (Exception e) { System.out.println(e.getMessage()); } return img; } /** * 修改图片,返回修改后的图片缓冲区(只输出一行文本) * @param img * @return */ public BufferedImage modifyImageYe(BufferedImage img) { try { int w = img.getWidth(); int h = img.getHeight(); g = img.createGraphics(); g.setBackground(Color.WHITE); g.setColor(Color.blue);//设置字体颜色 if (this.font != null) g.setFont(this.font); //g.drawString("www.hi.baidu.com?xia_mingjian", w - 85, h - 5); g.dispose(); } catch (Exception e) { System.out.println(e.getMessage()); } return img; } public BufferedImage modifyImagetogeter(BufferedImage b, BufferedImage d, int width, int height) { try { int w = b.getWidth(); int h = b.getHeight(); g = d.createGraphics(); g.drawImage(b, width, height, w, h, null); g.dispose(); } catch (Exception e) { System.out.println(e.getMessage()); } return d; } /** * BufferedImage拷贝 * @param source * @return */ public BufferedImage copyImage(BufferedImage source) { BufferedImage copyBufferedImage = new BufferedImage(source.getWidth(), source.getHeight(), source.getType()); Graphics g = copyBufferedImage.getGraphics(); g.drawImage(source, 0, 0, null); g.dispose(); return copyBufferedImage; } /** * 批量生成照片时,如果背景图片是一个时,对其进行拷贝在修改。 * @param pic * @param unitName * @param qRCode * @param backgroundImage * @param fontMetrics * @return */ public BufferedImage qRCodeGeneration(ImageMerging pic, String unitName, BufferedImage qRCode, BufferedImage backgroundImage, FontMetrics fontMetrics) { int strWidth = fontMetrics.stringWidth(unitName); BufferedImage copyBufferedImage = copyImage(backgroundImage); BufferedImage backgroundAndName = pic.modifyImage(copyBufferedImage, unitName, (1400 - strWidth) / 2, 1050); BufferedImage bufferedImage = pic.modifyImagetogeter(qRCode, backgroundAndName, 342, 218); return bufferedImage; } public static void main(String[] args) { ImageMerging tt = new ImageMerging(); BufferedImage b = tt.loadImageLocal("E:\\image\\33.png"); BufferedImage d = tt.loadImageLocal("E:\\image\\44.png"); //往图片上写文件 BufferedImage aaaaaaaa = tt.modifyImage(b, "勇衣小吃店", 578, 999); tt.writeImageLocal("E:\\image\\cc.jpg", tt.modifyImagetogeter(d, aaaaaaaa, 342, 218)); //将多张图片合在一起 System.out.println("success"); } }
-
利用Java程序把多张图片合成一张图片
2008-11-10 11:59:12利用Java程序把多张图片合成一张图片,利用Java程序把多张图片合成一张图片。 -
Java 多张图片合成一张 drawImage
2021-02-12 23:05:36package ...import java.awt.Color;import java.awt.Graphics;import java.awt.image.BufferedImage;import java.io.File;import java.io.FileInputStream;import java.io.FileOutpu... -
Java多张图片合成一张(横向或竖向)
2020-03-02 17:46:37代码说话 package ... import sun.misc.BASE64Decoder; import javax.imageio.ImageIO; import java.awt.*;...import java.awt.image.BufferedImage; import java.io.ByteArrayInputStream; import ... -
java 对图片的添加文字描述,以及两张图片合成一张
2019-05-17 15:15:00最近公司一个需要,需要把商品的优惠卷分享链接,生成一个二维码然后和商品主图合成一张,并且在新合成的主图增加商品信息的描述,好了直接看合成后图片的样式 下面我就直接贴代码,首先是Contorller层 /** ... -
Java实现多张图片合并一张
2021-10-26 14:34:22Java代码实现多张图片合并一张,这个还是挺常用到的。 -
java图片处理——多张图片合成一张Gif图片并播放或Gif拆分成多张图片
2021-02-26 13:59:391、多张jpg图合成gif动画/*** 把多张jpg图片合成一张*@parampic String[] 多个jpg文件名 包含路径*@paramnewPic String 生成的gif文件名 包含路径*/private synchronized voidjpgToGif(String pic[], String newPic)... -
利用java代码将二张图片合成一张图片
2019-02-22 17:10:46import java.awt.Graphics; import java.awt.Image; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import javax.imageio.ImageIO; public c... -
Java多张小图合成一张大图
2014-02-24 17:19:58java 程序将多张小图合成一张大图 适合css样式将多个小图合成大图 -
java实现把两张图片合并(Graphics2D)
2021-02-12 21:57:29import java.awt.Graphics2D;import java.awt.image.BufferedImage;import java.io.File;import java.io.IOException;import javax.imageio.ImageIO;/*** 把两张图片合并* @version 2018-2-27 上午11:12... -
Java解决两张图片合成后变色问题
2021-09-20 15:29:02Java解决两张图片合成后变色问题代码效果 如题,用Graphics2D合成海报后,遇到色值变红或者黑色的问题。这里,我最终的解决方式是,设置图像为BufferedImage.TYPE_3BYTE_BGR类型。 代码 如下,我试图将2.jpg图标贴到... -
java多张图片重叠。包括透明图片
2016-05-17 17:25:19这个代码可以把多张图片重叠成一张图片。如果是透明图片透明的部分还保持透明。 代码中是三张图片叠加,并且改变了其中一张图片的大小 -
多张图片合并
2018-08-10 15:52:08用于合并多张图片,包含读取图片、图片合并、灰度处理、添加背景色、保存图片等 -
通过BufferedImage实现将几张图片合成一张图片,图片效果类型为依次排列图片
2014-07-19 16:01:46所实现的效果是首先给你四张已经由ps处理过的图片,然后通过重新将这四张图还原 -
java程序把两张图片合成在一起
2010-04-25 12:35:59不用Ps就能不照片合在一起,两张图片在一起你也能办到,既能操作程序练习代码,又能处理图片 -
Java实现图片合成
2021-05-23 21:56:40竖向合成多张大小不一致的图片,以最宽图片的为宽为合成后的宽度, 高为所有图片的总高度.图片宽度没有达到合成的宽度则填充部分使用白色画布填充. 代码 /** * 多张图片进行竖向合并成一张图片 * @param image... -
java 合成两张图片或图片与二维码
2018-12-14 12:12:00以下为合成图片和二维码,合成2张图片参看第一个方法注释掉的代码 /* * overlapImage * @description:合成二维码和图片为文件 * @author 李阳 * @date 2018/12/13 * @params [backPicPath, code] * @... -
js+canvas实现两张图片合并成一张图片的方法
2020-10-16 01:42:16主要介绍了js+canvas实现两张图片合并成一张图片的方法,结合实例形式分析了JavaScript结合HTML5 canvas实现图片合并的操作技巧,并附带了Java图片合并的实现方法,需要的朋友可以参考下 -
Java实现二维码和文字合成一张新图片
2019-10-10 16:48:26很久没来写文章了,自己忙又懒。最近实现了一个需求,有点意思,就想起来记录一下。 业务需求:生成一个二维码,旁边还要加点解释说明什么的,(类似)最终...3.批量下载:选择使用java自带的ZipOutputStream压缩... -
Java小知识:多张图片合并成一张
2022-04-12 16:46:24本文就以jpg图片为例吧: /** * 功能描述:多个jpg文件合并成一个jpg到本地 * * @author songchengye * @date 2022/4/7 下午2:26 */ public static File jpgsToJpg(String newFileName, String... ... -
java 处理图片图片合成
2020-12-11 16:08:40先讲下我的需求,把一张图片盖到另外一张图片上面,然后在图片上加上字 第一个版本 最开始的时候我用的是thumbnailator工具包,如上图效果 但是问题来了,这张图有很大的问题,两个图都是透明度发生了变化。 第二个... -
《ffmpeg入门学习》 五 多个图片合成一张图片
2019-05-21 15:56:17场景:可能会遇到这样的需求,让我们查看一天每个小时的变化情况,并在一张图片中体现出来,那这就需要利用图片的切割和合成技术。 首先,我们需要把每天的每个小时图片,切割成一张图片,再把24个小时拼接成一个... -
java 在图片上写字,两个图片合并的实现方法
2021-02-28 12:06:29实例如下:package writeimg;import javax.imageio....import java.awt.Color;import java.awt.Font;import java.awt.Graphics2D;import java.awt.image.BufferedImage;import java.io.File;import java.io.IOExcept... -
java多张图片合成
2020-01-02 16:32:58在此处借用广东省教育学院的公众号图标,我的四张jpg都是长一样的,因为没什么图片了,所以就合成一张大的就长成这样子,image.drawImage这个方法是合成图片时,新的图片开始的类似x轴和y轴的开始的坐标,拥有抽象思维的...