`
嘻哈明天
  • 浏览: 1422 次
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

图片拼接

 
阅读更多
package com.image.splice;

import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.FileDialog;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Panel;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FilenameFilter;
import java.io.IOException;

import javax.imageio.ImageIO;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.filechooser.FileFilter;
import javax.swing.filechooser.FileNameExtensionFilter;



public class Main {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		EventQueue.invokeLater(new Runnable() {

			@Override
			public void run() {
				// TODO Auto-generated method stub
				SpliceImageFrame frame = new SpliceImageFrame();
				frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
				frame.setVisible(true);
			}
		});
	}

}

class SpliceImageFrame extends JFrame {
	Image image1 = null;
	Image image2 = null;
	private static final int WIDTH = 500;
	private static final int HEIGHT = 500;

	public File loadImage() {
		JFileChooser fileChooser = new JFileChooser();// 创建文件选择器
		FileFilter filter = new FileNameExtensionFilter("Image(JPG/GIF/BMP)",
				"JPG", "JPEG", "GIF", "BMP");// 创建过滤器
		fileChooser.setFileFilter(filter);// 设置过滤器
		int i = fileChooser.showOpenDialog(null);// 显示打开对话框
		File imgFile = null;
		if (i == JFileChooser.APPROVE_OPTION) {
			imgFile = fileChooser.getSelectedFile(); // 获取选中图片的File对象
			System.out.println(imgFile);
		}
		return imgFile;

	}

	public SpliceImageFrame() {
		setSize(400, 300);

		final ImagePanel imagePanel = new ImagePanel();
		this.add(imagePanel);

		Panel panel = new Panel();
		this.add(panel, BorderLayout.SOUTH);

		JButton imageOneButton = new JButton();
		imageOneButton.setText("Image1");
		panel.add(imageOneButton);
		imageOneButton.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
				File imageFile = loadImage();
				Toolkit kit = Toolkit.getDefaultToolkit();
				if (imageFile != null) {
					try {
						image1 = ImageIO.read(imageFile);// 构造BufferedImage对象
					} catch (IOException ex) {
						ex.printStackTrace();
					}
				}
				imagePanel.repaint();
			}
		});

		JButton imageTwoButton = new JButton();
		imageTwoButton.setText("Image2");
		panel.add(imageTwoButton);
		imageTwoButton.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
				File imageFile = loadImage();
				Toolkit kit = Toolkit.getDefaultToolkit();
				if (imageFile != null) {
					try {
						image2 = ImageIO.read(imageFile);// 构造BufferedImage对象
					} catch (IOException ex) {
						ex.printStackTrace();
					}
				}
				imagePanel.repaint();
			}
		});

		JButton spliceButton = new JButton();
		spliceButton.setText("splice");
		panel.add(spliceButton);
		spliceButton.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
				FileDialog dialog = new FileDialog(SpliceImageFrame.this,"保存");// 创建对话框
                dialog.setMode(FileDialog.SAVE);// 设置对话框为保存对话框
                dialog.setVisible(true);// 显示保存对话框
                String path = dialog.getDirectory();// 获得文件的保存路径
                String fileName = dialog.getFile();// 获得保存的文件名
//                if (path == null || fileName == null){
//                    return;
//                }
//                String fileExtName = fileName.substring(fileName.indexOf(".")+1);// 文件扩展名,不含点
//                String pathAndName = path + "\\" + fileName;// 文件的完整路径
//				if (path == null || fileName == null) {
//					return;
//				}
//				String fileExtName = fileName
//						.substring(fileName.indexOf(".") + 1);// 文件扩展名,不含点
				String pathAndName = path + "\\" + fileName+".jpg";// 文件的完整路径
				BufferedImage bufferImage = new BufferedImage(WIDTH*2, HEIGHT,
						BufferedImage.TYPE_INT_RGB);
				Graphics g = bufferImage.getGraphics();// 获得绘图上下文对象
				g.drawImage(image1, 0, 0, WIDTH, HEIGHT, null);
				g.drawImage(image2, WIDTH, 0, WIDTH, HEIGHT, null);
				try {
					ImageIO.write(bufferImage, "jpg", new File(pathAndName));
				} catch (IOException e1) {
					// TODO Auto-generated catch block
					e1.printStackTrace();
				}
			}
		});

	}

	private class ImagePanel extends Panel {
		public ImagePanel() {
			setSize(200, 100);
		}

		@Override
		public void paint(Graphics g) {
			// TODO Auto-generated method stub
			g.drawImage(image1, 0, 0, 150, 200, null);
			g.drawImage(image2, 150, 0, 150, 200, null);
		}

	}
}

 

分享到:
评论

相关推荐

    opencv图片拼接 opencv图片拼接

    opencv图片拼接opencv图片拼接opencv图片拼接opencv图片拼接opencv图片拼接opencv图片拼接opencv图片拼接opencv图片拼接opencv图片拼接opencv图片拼接opencv图片拼接opencv图片拼接opencv图片拼接opencv图片拼接...

    C# Winfrom图片剪切-拼接(多图图片拼接)

    2、实现拼接原图(即拿来拼接的图片)拖拽至拼接相框,松开鼠标后,点击“拼接”按钮,实现图片拼接; 已经实现把需要拼的图片放一起了,就不用考虑点击拼接,直接点另存,在里面拼接和另存功能。 以下布局图片拼...

    c# 图片拼接 opencv

    图片拼接,也称为图像融合或全景摄影,是将多张图片合并成一张大图的过程,通常用于创建宽视角或全景图像。这一过程涉及图像对齐、重叠区域处理、透视校正等多个步骤。 在C#中使用OpenCV进行图片拼接,首先需要安装...

    C#Winform图片剪切拼接终结版(多幅图片拼接、左右上下拼接)

    在本文中,我们将深入探讨C# Winform应用中实现图片剪切与拼接的技术细节,以及如何构建一个功能丰富的图片处理工具。标题“C# Winform图片剪切拼接终结版(多幅图片拼接、左右上下拼接)”表明这是一个针对C#开发者,...

    QT + 图片拼接源码及其应用程序

    在QT中,我们可以先创建一个足够大的空QImage对象,然后逐个将每张图片复制到这个大图的指定位置。这个过程涉及到图像的拷贝和坐标转换,以及对图片尺寸的精确控制。 横向拼接,即行拼接,是将图片在水平方向上组合...

    opencv OpenCvSharp 图片拼接.zip

    在计算机视觉领域,图片拼接是一项常见的任务,用于将多张图像组合成一张全景图或者进行其他创意图像处理。OpenCV(开源计算机视觉库)是一个强大的工具,它提供了丰富的功能来处理图像和视频。OpenCVSharp是OpenCV...

    易语言GDI方式实现图片拼接

    在IT行业中,图片处理是一项常见的任务,而图片拼接则是其中一种常见的操作,它将多张图片合并成一张,常用于制作拼贴画、报告、海报等。在Windows平台上,利用GDI(Graphics Device Interface)图形设备接口可以...

    python实现图片拼接,输出全景图片

    2. **图像预处理**:这一步可能包括调整图片大小,使其具有相同的尺寸,或者进行直方图均衡化,以确保拼接后的图片色彩一致。 3. **特征匹配**:在每对相邻图片之间进行特征检测,找到共同的特征点。OpenCV库中的`...

    opencv+QT实现图片拼接和Mat转QImage

    比如拼接a,b两张图片,a图片包含内容m和n, b图片包含内容n和j,a和b图片有重叠内容为n,拼接成功后图片显示为m+n+j, 即只显示一次重叠部分。左右拼接后的图像宽度为a.width+b.width-offset,上下拼接后的图像高度...

    GDAL无缝图片拼接

    【GDAL无缝图片拼接】 GDAL(Geospatial Data Abstraction Library)是一个开源的库,主要用于处理地理空间数据,包括栅格数据和矢量数据。这个强大的工具提供了丰富的功能,如读取、写入、转换和处理各种地理图像...

    关于将多张图片拼接成一张全景图片拼接程序

    ### 图片拼接技术概述 在图像处理领域中,图片拼接是一种常用的技术手段,它能够将多张图片按照特定的方式合并成一张完整的图像。这种技术广泛应用于虚拟现实、地图制作、全景摄影等多个领域。 ### 关键代码分析 ...

    淘淘图片拼接之星完美注册版

    淘淘图片拼接之星是一款专业的将多张图片拼接成一张大图的软件。 本软件的主要特性有: 1.可以任意设置拼图的行列数,如单行、单列、多行多列; 2.支持缩放原图图片:可以统一原图的宽度或统一原图的高度; 3.支持...

    java多张图片合成,图片拼接,图片上写字

    图片拼接是指将多张图片横向或纵向排列形成一个长图。这个过程可以通过创建一个新的大图像,然后按照指定位置依次将每张小图绘制到新图像上来实现。关键在于计算每张图片在新图像上的起始坐标,确保它们正确对齐。...

    瓦片地图制作(图片拼接)

    在本项目中,我们将探讨如何利用图片拼接技术和JavaScript实现地图的拖拽和缩放功能,并且会提及一个C#编写的图片切割程序。 首先,我们要理解瓦片地图的工作原理。瓦片通常以256x256像素的大小进行切割,基于Web ...

    OpenCV C#平台图片拼接

    3. **图片拼接**:这是项目的核心任务,涉及到将多张图像合并成一张新的大图。图片拼接常用于全景照片制作、图像融合、数据可视化等领域。 在实现图片拼接的过程中,开发者可能需要以下步骤: 1. **读取图像**:...

    图片拼接技术 C++

    图片拼接技术是一种在计算机视觉领域中常见的图像处理方法,它通过将多张图片组合成一张大图,来实现全景照片、图像拼贴或者虚拟现实场景的创建。在这个C++项目中,开发者利用了OpenCV库,特别是OpenCV 2.4.9版本,...

    拼图--把N张图片拼接出另一张图片

    在编程环境中,可以通过定位和调整每个图片的坐标,然后将它们写入同一张大图。 5. **调整与优化**:拼接后可能需要进行一些后期处理,比如调整对比度、亮度、色彩平衡,或者添加边框、阴影等特效,使图片看起来...

    matlab图片拼接代码

    7. **优化算法**:在实际的碎图拼接中,可能会使用到优化算法,如梯度下降法、遗传算法或粒子群优化,以找到最佳的拼接顺序或位置。 8. **图像重采样**:当图像大小不同时,可能需要使用`imresize`函数进行重采样,...

    百度地图分析之下载图片拼接

    总结,百度地图分析中的图片下载拼接涉及到地图坐标系转换、API调用、图块下载、图像处理等多个技术环节。通过这些技术,我们可以获取和处理百度地图上的任何区域的高分辨率图片,为地理信息分析、路线规划等应用...

    MATLAB手动选取控制点进行图片拼接

    在MATLAB中,手动选取控制点进行图片拼接是一种常用的方法,尤其在处理图像序列或者需要精确对齐图像时。这种技术不依赖于复杂的模式识别算法,而是通过用户直观地选择图像之间的对应点来实现。本文将深入探讨涉及的...

Global site tag (gtag.js) - Google Analytics