java如何将多张图片连接成一张图片
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java如何将多张图片连接成一张图片相关的知识,希望对你有一定的参考价值。
参考技术A Image bgImage;Image fgImage;
try
bgImage = ImageIO.read(bgImageFile);
fgImage = ImageIO.read(fgImageFile);
int bgWidth = bgImage.getWidth(null);
int bgHeight = bgImage.getHeight(null);
int fgWidth = fgImage.getWidth(null);
int fgHeight = fgImage.getHeight(null);
// 此类叫SpliceImages,这个方法是静态方法,所以实例化一下
// 后面的这个对象的属性是自定义的类成员。
SpliceImages spliceImages = new SpliceImages();
// 私有方法
spliceImages.parsePosition(position, bgWidth, bgHeight, fgWidth, fgHeight);
// 生成新图片的长、宽,后面那个是色彩模式
BufferedImage bufferedImage = new BufferedImage(spliceImages.WIDTH, spliceImages.HEIGHT, BufferedImage.TYPE_INT_RGB);
Graphics graphics = bufferedImage.createGraphics();
// 绘制背景图片
graphics.drawImage(bgImage, spliceImages.bgX, spliceImages.bgY, null);
// 绘制前景图片
graphics.drawImage(fgImage, spliceImages.fgX, spliceImages.fgY, null);
graphics.dispose();
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(output);
encoder.encode(bufferedImage);
output.close();
catch (IOException e)
e.printStackTrace();
这个是我做图表时写的,整个类中定义了很多重载方法,所以不全贴了。由于用的FusionCharts3.1,单系列图表没有图例,为了处理导出图片,就自制图例,然后用java拼接。其中那个私有方法是我处理两张图片的左上角坐标的。这里就不贴了。实际上我的做法就是取出两个图片,然后重新绘制。做法比较笨,希望抛砖引玉吧。同理,图片覆盖也是用这个,只是两图片的坐标发生变发。 参考技术B 需要用到BufferedImage了 你查一下这方面的资料
你要的那个功能很简单···但是例子写起来很麻烦
参考资料:http://zhidao.baidu.com/question/122992354.html
gif动态图片生成器,多张图片组合后生成动图...
这个小工具制作的目的是为了将多张图片组合后生成一张动态的GIF图片。设置界面化的操作,只需要将选中的图片导入最后直接生成动态图片。
需要完整源码前往文末,文末附完整源码获取方式。
导入界面相关的第三方库
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
动态图片处理模块
import imageio
应用操作相关库
import sys
import os
from datetime import datetime
这是用图片生成器生成的一张GIF图片,大家在生成时尽量选择两张大小尺寸一致的照片生成后的动态图片切合度会比较高。
小工具中包含两个重要的函数过程,一个是UI界面的制作生成,另一个是将多张图片进行合成GIF的动态图片。
UI 界面制作函数过程。
def init_ui(self):
self.setWindowTitle(\'Gif图片生成器 公众号:[Python 集中营]\')
self.setWindowIcon(QIcon(\'图标.ico\'))
vbox = QVBoxLayout()
self.moive_label = QLabel()
gif = QMovie()
gif.setFileName(\'20220124215914.gif\')
self.moive_label.setMovie(gif)
gif.start()
grid = QGridLayout()
self.images_text = QLineEdit()
self.images_text.setPlaceholderText(\'源图片文件\')
self.images_text.setReadOnly(True)
self.images_btn = QPushButton()
self.images_btn.setText(\'选择图片\')
self.images_btn.clicked.connect(self.images_btn_click)
self.save_dir = QLineEdit()
self.save_dir.setPlaceholderText(\'存储路径\')
self.save_dir.setReadOnly(True)
self.save_dir_btn = QPushButton()
self.save_dir_btn.setText(\'存储路径\')
self.save_dir_btn.clicked.connect(self.save_dir_btn_click)
self.generate_btn = QPushButton()
self.generate_btn.setText(\'快速生成\')
self.generate_btn.clicked.connect(self.generate_btn_click)
grid.addWidget(self.images_text, 0, 0, 1, 2)
grid.addWidget(self.images_btn, 0, 2, 1, 1)
grid.addWidget(self.save_dir, 1, 0, 1, 2)
grid.addWidget(self.save_dir_btn, 1, 2, 1, 1)
grid.addWidget(self.generate_btn, 2, 0, 1, 3)
vbox.addLayout(grid)
vbox.addWidget(self.moive_label)
self.setLayout(vbox)
GIF动态图片生成过程。
def generate_btn_click(self):
paths = []
image_paths = self.images_text.text().strip().split(",")
for image_path in image_paths:
if image_path.strip() != \'\':
paths.append(image_path)
print(\'已选择的图片路径:\', paths)
gif_image = []
for path in paths:
gif_image.append(imageio.imread(path))
gif_path = self.save_dir.text().strip() + \'/\' + datetime.now().strftime("%Y%m%d%H%M%S") + \'.gif\'
imageio.mimsave(gif_path, gif_image, fps=1)
gif = QMovie()
gif.setFileName(gif_path)
self.moive_label.setMovie(gif)
gif.start()
公众号内回复"动态图片合成器"获取完整源代码,可以根据源代码进行自定义改造。
我是 [Python 集中营]、很高兴您看到了最后, 我是一个专注于 Python 知识分享的公众号,希望可以得到您的关注~
【往期精彩】
python几个常见的数据处理操作,一行代码就能完成!
过年了,用 PyQt5 生成一副春联吧...
记录一下python中的十大%占位符对应的格式化...
PyQt5 UI 制作一个豆瓣电影信息查看器,初识QThread多线程...
PyQt5 最小化到托盘,升级小闹钟...
欢迎关注作者公众号【Python 集中营】,专注于后端编程,每天更新技术干货,不定时分享各类资料!
以上是关于java如何将多张图片连接成一张图片的主要内容,如果未能解决你的问题,请参考以下文章
一个网页中有100多张图片,怎样一次性把这些图片存到电脑中?