java课程设计 图片查看器要点

合集下载

XnView图像查看工具使用指南

XnView图像查看工具使用指南

XnView图像查看工具使用指南第一章:XnView图像查看工具的简介XnView是一款功能强大的图像查看工具,它支持多种图像格式,包括常见的JPEG、PNG、GIF等,同时也支持一些不太常见的格式,如RAW格式等。

此外,XnView还具备图像编辑和批处理功能,让用户能够更方便地管理和处理图像文件。

第二章:安装和配置XnView图像查看工具使用XnView之前,首先需要下载并安装软件。

在官方网站上下载适合自己操作系统的安装包,然后按照指示进行安装。

安装完成后,可以根据自己的需求进行一些基本配置,比如设置默认的图像查看模式、调整界面语言等。

第三章:图像查看功能的使用当打开XnView时,主界面会展示文件夹浏览器和图像查看器。

在文件夹浏览器中,可以通过点击文件夹进行文件的浏览和选择。

在选中某个图像后,它会在图像查看器中显示,可以通过滚轮放大缩小图像,通过鼠标拖动来移动图像的位置。

还可以通过菜单栏上的一些按钮,实现旋转、翻转等操作。

第四章:图像编辑功能的使用XnView具备一些简单的图像编辑功能,比如裁剪、调整亮度对比度、应用滤镜等。

在图像查看器中,点击“编辑”按钮,即可进入图像编辑模式。

在这个模式下,可以通过选择编辑选项,进行不同的操作。

例如,通过选择裁剪选项,可以调整裁剪区域的大小和位置;通过选择调整亮度对比度选项,可以改变图像的明暗度。

第五章:图像批处理功能的使用XnView还支持图像的批处理功能,可以同时对多个图像文件进行批量操作。

在菜单栏中选择“工具”>“批处理处理(Shift+Ctrl+B)”选项,会弹出批处理工具窗口。

在这里,可以选择要处理的图像文件夹,并选择要进行的操作,如调整大小、旋转、重命名等。

点击“开始”按钮后,XnView将会按照你的设置,对所选择的图像文件进行批量处理。

第六章:其他实用功能的介绍除了上述功能外,XnView还提供了一些其他实用的功能。

比如,它能够通过图像的EXIF信息显示拍摄日期和相机型号等信息;它还支持创建图像幻灯片,并可以对幻灯片进行自定义设置;此外,XnView还支持图像的转换和重命名等操作。

基于Java的图像处理系统设计

基于Java的图像处理系统设计

基于Java的图像处理系统设计1. 什么是基于Java的图像处理系统基于Java的图像处理系统是一种利用Java编程语言和相关的图像处理库来处理和操作图像的软件系统。

它可以用于图像的加载、保存、编辑、变换、滤波、分析等各种操作,以满足不同应用领域对图像处理的需求。

2. 为什么选择Java作为开发语言Java是一种跨平台的编程语言,具有广泛的应用领域和强大的生态系统支持。

使用Java开发图像处理系统可以在不同操作系统上运行,提供灵活性和可移植性。

此外,Java还提供了丰富的图像处理库和工具,如Java Advanced Imaging (JAI)、JavaFX等,便于开发人员进行图像处理和界面设计。

3. 图像加载与保存基于Java的图像处理系统可以通过Java提供的图像IO类库,如javax.imageio 包中的ImageIO类,实现图像的加载和保存。

通过指定图像的路径和格式,可以读取和写入不同类型的图像文件,如JPEG、PNG、BMP等。

加载后的图像可以表示为Java中的BufferedImage对象,便于后续的图像处理操作。

4. 图像编辑与变换基于Java的图像处理系统可以使用Java提供的图像处理库,如Java Advanced Imaging (JAI),对图像进行编辑和变换。

通过JAI提供的各种操作,如缩放、旋转、平移、裁剪等,可以对图像进行基本的几何变换。

同时,还可以进行色彩空间转换、亮度调整、对比度增强等颜色处理操作,以满足不同需求。

5. 图像滤波与增强基于Java的图像处理系统可以使用Java提供的滤波器库,如JavaFX中的滤波器类,对图像进行滤波和增强。

通过应用不同的滤波器,如高斯滤波器、中值滤波器、锐化滤波器等,可以去除图像中的噪声、平滑图像、增强图像细节等。

滤波操作可以通过对图像的每个像素点进行计算和处理来实现。

6. 图像分析与特征提取基于Java的图像处理系统可以使用Java提供的图像分析库,如OpenCV等,对图像进行分析和特征提取。

图片预览功能

图片预览功能

图片预览功能图片预览功能是指在一个网页或应用程序中,用户可以点击或悬停在一个图片上,以便查看或放大该图片的功能。

这种功能可大大提升用户体验,因为它允许用户更加便捷地查看图片的细节,并能够更容易地决定是否要点击查看该图片的全尺寸版本。

图片预览功能的实现通常有两种方式:点击预览和悬停预览。

点击预览是指用户需要点击图片才能查看其预览版本,而悬停预览是指用户只需将鼠标指针悬停在图片上方即可查看其预览版本。

点击预览功能通常通过以下步骤实现:1. 首先,需要在网页或应用程序中添加一个点击事件监听器,以便捕获用户点击图片的操作。

2. 当用户点击图片时,监听器会触发一个预览函数,该函数会展示一个包含预览图片的模态框(modal)。

3. 预览函数会动态创建一个包含预览图片的HTML元素,并将其添加到模态框中。

通常,预览图片的尺寸会比原始图片小,以便更好地适应模态框的尺寸。

4. 模态框还可以包含一些控制按钮,如关闭按钮、放大按钮和缩小按钮,以便用户可以与预览图片进行交互。

5. 当用户点击关闭按钮或模态框外部时,预览函数会关闭模态框,结束预览。

悬停预览功能通常通过以下步骤实现:1. 首先,需要在网页或应用程序中添加一个悬停事件监听器,以便捕获用户将鼠标悬停在图片上方的操作。

2. 当用户悬停在图片上方一段时间后,监听器会触发一个预览函数,该函数会展示一个包含预览图片的工具提示框(tooltip)。

3. 预览函数会动态创建一个包含预览图片的HTML元素,并将其添加到工具提示框中。

通常,预览图片的尺寸会比原始图片小,以便更好地适应工具提示框的尺寸。

4. 工具提示框还可以包含一些控制按钮,如关闭按钮、放大按钮和缩小按钮,以便用户可以与预览图片进行交互。

5. 当用户将鼠标移出图片或工具提示框时,预览函数会关闭工具提示框,结束预览。

无论是点击预览还是悬停预览,图片预览功能都可以提供一种便捷的方式让用户查看和放大图片。

通过使用合适的预览尺寸和控制按钮,可以大大提升用户体验,并使用户更轻松地浏览和决定是否要查看更多图片。

Java获取图片的大小、宽、高

Java获取图片的大小、宽、高

Java获取图⽚的⼤⼩、宽、⾼ 1import java.awt.image.BufferedImage;2import java.io.File;3import java.io.FileInputStream;4import java.io.FileNotFoundException;5import java.io.IOException;67import javax.imageio.ImageIO;89public class Picture {10public static void main(String[] args) throws FileNotFoundException, IOException {11 File picture = new File("E:/PrintScreen/StarSky.jpg");12 BufferedImage sourceImg = ImageIO.read(new FileInputStream(picture));1314 System.out.println(String.format("Size: %.1f KB", picture.length()/1024.0));15 System.out.println("Width: " + sourceImg.getWidth());16 System.out.println("Height: " + sourceImg.getHeight());17 }18 }这个没看懂!1import java.io.File;2import java.io.IOException;3import java.util.Iterator;45import javax.imageio.ImageIO;6import javax.imageio.ImageReader;7import javax.imageio.stream.ImageInputStream;89public class Picture {10public static void main(String[] args) {11 String srcPath = "E:/PrintScreen/1.jpg";1213 File file = new File(srcPath);14try {15 Iterator<ImageReader> readers = ImageIO.getImageReadersByFormatName("jpg");16 ImageReader reader = (ImageReader) readers.next();17 ImageInputStream iis = ImageIO.createImageInputStream(file);18 reader.setInput(iis, true);19 System.out.println("width: " + reader.getWidth(0));20 System.out.println("height: " + reader.getHeight(0));21 } catch (IOException e) {22 e.printStackTrace();23 }24 }25 }##########################################################################注意:图⽚是预先存放在Java Project下的Package中1import java.awt.Image;2import java.awt.image.BufferedImage;3import java.io.IOException;4import .URL;56import javax.imageio.ImageIO;78public class GetImageSize {9public static void main(String[] args) throws IOException {10 BufferedImage bi = null;1112try {13 URL u = GetImageSize.class.getClassLoader().getResource("images/background.png");14 bi = ImageIO.read(u);15 } catch (IOException e) {16 e.printStackTrace();17 }18 Image img = bi;1920 System.out.println(img.getWidth(null));21 System.out.println(img.getHeight(null));22 }23 }。

Java图像处理:使用Java 2D API实现图片处理

Java图像处理:使用Java 2D API实现图片处理

Java图像处理:使用Java 2D API实现图片处理引言:随着数字摄影技术的发展,我们每天都会拍摄大量的照片。

然而,有时候我们可能需要对这些照片进行一些处理,以使它们更加美观或符合特定的需求。

在本文中,我们将介绍如何使用Java 2D API来实现图片处理,帮助您更好地处理和优化您的图片。

第一部分:Java 2D API简介Java 2D API是Java平台中用于处理图形和图像的强大工具。

它提供了一组丰富的类和方法,使我们能够创建和操作各种图形对象,如线条、矩形、多边形和图像。

Java 2D API还支持图形渲染、颜色管理和图像转换等高级功能。

第二部分:加载和显示图片在开始处理图片之前,我们首先需要加载和显示图片。

Java 2D API提供了Image类来处理图像。

我们可以使用ImageIO类的静态方法read()来从文件中读取图像,并将其保存在一个Image对象中。

然后,我们可以使用Graphics类的drawImage()方法将图像绘制到指定的位置上。

第三部分:图片缩放有时候,我们可能需要调整图片的大小,使其适应特定的显示区域或满足特定的要求。

Java 2D API提供了AffineTransform类来处理图像的变换操作。

我们可以使用AffineTransform类的scale()方法来缩放图像。

通过指定缩放因子,我们可以按比例增加或减小图像的大小。

第四部分:图片旋转除了缩放,有时候我们还需要将图片旋转一定角度。

Java 2D API同样提供了AffineTransform类来实现图像的旋转操作。

我们可以使用AffineTransform类的rotate()方法来指定旋转的角度,并将其应用于图像。

第五部分:图片滤镜效果为了给图片增加一些特殊的效果,Java 2D API提供了一些内置的滤镜类。

我们可以使用这些滤镜类来对图像进行模糊、锐化、亮度调整等操作。

通过创建一个Filter对象,并将其应用于图像,我们可以很容易地实现这些效果。

java_图片管理系统代码及设计

java_图片管理系统代码及设计

Page 8
功能分析
二 功能分析
图片管理系统主要分为三个模块: 树形图片管理器:该模块主要用来从文件夹中遍历图像文件并建立成 一个树状的图片管理器。 图片显示区域:主要用来显示图片以及被处理后的各种效果。 图片处理工具栏:主要是一个工具栏包含了对图片处理的各个功能, 例如放大,缩小,旋转等。
Page 22

Page 23
if(degree == 180|| degree == 0 || degree == 360) { w = iw; h = ih; } else if(degree == 90|| degree == 270) { w = ih; h = iw; } else { int d=iw+ih; w=(int)(d*Math.abs(Math.cos(ang))); h=(int)(d*Math.abs(Math.sin(ang))); } x = (w/2)-(iw/2);//确定原点坐标 y = (h/2)-(ih/2);
Page 18

public static void addNode() { tree=new JTree(root); } public static void refreshList(String path,DefaultMutableTreeNode root,HashMap hm1) { File dir = new File(path); File[] files = dir.listFiles(); if(files==null) return; for (int i = 0; i<files.length; i++) { if(files[i].isDirectory()) //如果是文件夹,则继续向下遍历 { String folderName = files[i].getAbsolutePath(); node1=new DefaultMutableTreeNode(folderName); HashMap hm2=new HashMap(); HashMap hm3=new HashMap(); hm1.put(folderName,hm3); root.add(node1);

写个简单的18禁图片查看器

写个简单的18禁图片查看器

写个简单的18禁图⽚查看器
简介
这是⼀个⽤C# Winform 写的简易的成⼈图⽚查看器,通过输⼊你的⾝份证号码来判断你是否年满18岁,如果18岁以上,你则允许查看图⽚,否则会提⽰你"未成年",不能查看.原理
就是通过截取⾝份证18位号码中的第7到第10位那是每个公民的出⽣年份,然后与当前系统的年份相⽐较,如果差距⼤于18,说明你成年了,⼩于18则未成年.
界⾯设计
代码
运⾏效果测试
开始运⾏,当前图⽚为隐藏.
随便输⼊⼀串号码数字和字母(数量不⾜18位), 弹出提⽰⾝份证号码不⾜18位!
随便输⼊⼀串数字(仅数字且不⾜18位),弹出提⽰⾝份证号码不⾜18位!
输⼊准确的18位⾝份证号码,弹出提⽰请查看,同时图⽚为可见.
如果你未满18岁,弹出提⽰:"你未成年,不允许看图⽚." 图⽚为不可见!
呵呵⼀个简单的18禁图⽚查看器就写好了! ~~~~~:)。

使用JAVA进行图像识别与处理的工具及技术

使用JAVA进行图像识别与处理的工具及技术

使用JAVA进行图像识别与处理的工具及技术引言:随着科技的不断发展,图像识别与处理已经成为了计算机科学领域的热门研究方向。

而JAVA作为一种广泛应用于软件开发的编程语言,也提供了丰富的工具和技术来支持图像识别与处理。

本文将介绍一些常用的JAVA图像处理工具和技术,并探讨其在实际应用中的优势和挑战。

一、图像处理工具1. OpenCVOpenCV是一个开源的计算机视觉库,提供了丰富的图像处理和计算机视觉算法。

它支持多种编程语言,包括JAVA。

通过使用OpenCV,开发人员可以轻松实现图像的读取、显示、滤波、边缘检测等常见操作。

同时,OpenCV还提供了一些高级功能,如人脸检测、目标跟踪等,使得图像处理更加便捷和高效。

2. Java Advanced Imaging (JAI)JAI是JAVA平台上的一组图像处理API,提供了丰富的图像处理功能。

它支持图像的读取、写入、缩放、旋转、滤波等操作,并且可以处理多种图像格式。

JAI还提供了一些高级功能,如图像合成、图像分析等,使得开发人员能够更加灵活地进行图像处理。

3. ImageJImageJ是一款基于JAVA的开源图像处理软件,提供了丰富的图像处理和分析功能。

它支持图像的读取、显示、滤波、分割等操作,并且提供了一些常用的图像分析算法,如形态学操作、图像测量等。

ImageJ还支持插件扩展,使得开发人员可以根据需求添加自定义的图像处理功能。

二、图像识别技术1. 机器学习机器学习是一种广泛应用于图像识别的技术。

通过训练模型,机器可以从大量的图像数据中学习特征,并对新的图像进行分类和识别。

JAVA提供了一些机器学习库,如Weka和DL4J,可以帮助开发人员实现图像分类、目标检测等任务。

2. 深度学习深度学习是一种基于神经网络的图像识别技术。

它通过多层次的神经网络模型,可以学习到更加复杂的图像特征,并实现更高精度的图像识别。

JAVA提供了一些深度学习库,如Deeplearning4j和DL4J,可以帮助开发人员构建和训练深度学习模型。

java照片查看器源代码

java照片查看器源代码

package ioStream;import java.awt.AWTEvent;import java.awt.Color;import java.awt.Graphics;import java.awt.Graphics2D;import java.awt.Image;import java.awt.Toolkit;import java.awt.event.AWTEventListener;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.KeyEvent;import java.awt.event.MouseWheelEvent;import java.awt.event.MouseWheelListener;import java.awt.geom.AffineTransform;import java.io.File;import java.util.LinkedList;import java.util.List;import javax.swing.ImageIcon;import javax.swing.JFileChooser;import javax.swing.JFrame;import javax.swing.JPanel;import javax.swing.Timer;import javax.swing.UIManager;import javax.swing.filechooser.FileNameExtensionFilter;/** 该代码意在实现照片查看器的功能* 当按下“右箭头”时浏览下一张图片* 当按下“左箭头"时浏览上一张图片* 实现循环浏览* 当按下"Ecs"时推出全屏浏览模式* 当按下CTRL+“上箭头”时,全屏显示* 只能浏览指定文件夹下面的所支持格式的图片(gif,jpg,png)*链表的大小与他的最大角标相隔1*/public class PicsViewer {static JFrame frame0;//原始的全屏显示的窗口static int SWidth=Toolkit.getDefaultToolkit().getScreenSize().width;static int SHeight=Toolkit.getDefaultToolkit().getScreenSize().height;static Image icon=(new ImageIcon("PicsViewer/img.png")).getImage();//框架图标JFileChooser chooser; //声明一个文件选择器对象static JPanel imgjp;static Image img0=(new ImageIcon("image/cat.png")).getImage();//默认的一张图片File files;static int j=0;static int k=0;static File root;static int i=0;Timer T00;String[] Str;//获取文件名字符串static Image img;static int xCoor,yCoor;//打印图片的左上角坐标static int PWidth,PHeight;//图片的宽高(小于屏幕宽高的时候的)static int PWidth0,PHeight0;//图片宽高大于屏幕宽高的时候的图片宽高String CPath;//直接获得的路径String newPath;//经过转换后的路径static List<Image> list=new LinkedList<Image>();int index=0;static int index0=0;static double xCoor0=1,yCoor0=1;//图片在X轴缩放的倍数,图片在Y轴的缩放倍数;static boolean isFull=true;//是否全屏显示static int now;//当前正在使用的图片public PicsViewer(){frame0=new JFrame();imgjp=new ImgsPanel();imgjp.setBackground(new Color(51,51,51));frame0.add(imgjp);frame0.setTitle("PicsViewer1.0");frame0.setSize(SWidth,SHeight);frame0.setUndecorated(isFull);frame0.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//不设置窗口的位置,是因为窗口默认的位置就是在桌面的左上角frame0.setIconImage(icon);//设置窗口图标frame0.setVisible(true);/** 程序一启动就弹出文件选择对话框让用户选择所要浏览的图片*/try {UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");//设置为当前操作系统的外观JFileChooser chooser = new JFileChooser();chooser.setDialogTitle("请选择要查看的图片");chooser.addChoosableFileFilter(new FileNameExtensionFilter("常见图片格式", "jpg", "gif", "png"));chooser.showOpenDialog(frame0);int returnVal = chooser.showOpenDialog(frame0);if(returnVal == JFileChooser.APPROVE_OPTION) {img=(new ImageIcon(chooser.getSelectedFile().toString())).getImage();CPath=chooser.getCurrentDirectory().toString()+System.getProperty("file.separator");newPath=CPath.replaceAll("\\\\","/");//路径转换root=new File(newPath);img0=img;imgjp.repaint();findImage(root);}} catch (Exception evt) {}Toolkit toolkit = Toolkit.getDefaultToolkit();toolkit.addAWTEventListener(new ShortcutKeyListener(), AWTEvent.KEY_EVENT_MASK | AWTEvent.MOUSE_EVENT_MASK| AWTEvent.WINDOW_EVENT_MASK);/*添加键盘监听事件,当点击键盘上的方向键右键时浏览下一张图片,点击左箭头浏览上一张,当按下上箭头时对当前图片进行放大操作* 当按下下箭头时,对当前浏览的图片进行缩小操作* 同时添加鼠标滚轮监听事件,也对当前图片进行缩放操作**/imgjp.addMouseWheelListener(new MouseWheelListener(){public void mouseWheelMoved(MouseWheelEvent e){if(e.getWheelRotation()<0){//如果鼠标滚轮向上滚动,则放大图片}else{//否则缩小图片}}});}public void findImage(File dir){File[] files=dir.listFiles();//得到当前路径下的所有文件和文件夹for(int i=0; i<files.length; i++){Str=new String[files.length];Str[i]=files[i].getAbsolutePath();//将路径和文件名存入字符串数组//使用链表替代数组if(Str[i].endsWith(".jpg")||Str[i].endsWith(".gif")||Str[i].endsWith(".png")==true){list.add(index,(new ImageIcon(Str[i])).getImage());index++;}}}//画图的算法有点问题????static class ImgsPanel extends JPanel{private static final long serialVersionUID = 1L;public void paintComponent(Graphics g){super.paintComponent(g);Graphics2D G2=(Graphics2D)g;AffineTransform Trans=new AffineTransform();PWidth=img0.getWidth(null);PHeight=img0.getHeight(null);if(PWidth<=SWidth&&PHeight<=SHeight){xCoor=(SWidth-PWidth)/2;yCoor=(SHeight-PHeight)/2;PWidth0=PWidth;PHeight0=PHeight;Trans.scale(xCoor0,yCoor0);//对图片的缩放操作// G2.setTransform(Trans);}if(PWidth>SWidth||PHeight>SHeight){yCoor0=SHeight/(PHeight*1.0);PHeight0=SHeight;PWidth0=(int)(PWidth*yCoor0);xCoor0=yCoor0;xCoor=(SWidth-PWidth0)/2;yCoor=-(PHeight0-SHeight)/2;Trans.scale(xCoor0,yCoor0);//对图片的缩放操作// G2.setTransform(Trans);}G2.drawImage(img0,xCoor,yCoor,PWidth0,PHeight0,this);}}static class Tim implements ActionListener{public void actionPerformed(ActionEvent e){//看来变量最好不要用相同的变量名img0=(Image)(list.get(index0));index0++;if(index0==list.size()){index0=0;img0=(Image)(list.get(index0));index0++;imgjp.repaint();}imgjp.repaint();}}static class ShortcutKeyListener implements AWTEventListener { public void eventDispatched(AWTEvent e) {if (e.getClass() == KeyEvent.class) {// 被处理的事件是键盘事件.KeyEvent keyEvent = (KeyEvent) e;if (keyEvent.getID() == KeyEvent.KEY_PRESSED) {keyPressed(keyEvent);} else if (keyEvent.getID() == KeyEvent.KEY_RELEASED) {keyReleased(keyEvent);}}}/** 当只有一张图片是抛出异常,不能使用左右方向键,待解决*/private void keyPressed(KeyEvent e) {switch(e.getKeyCode()){case KeyEvent.VK_RIGHT: if(list.size()!=1){img0=(Image)(list.get(index0));now=index0;index0++;if(index0==list.size()-1){index0=0;img0=(Image)(list.get(index0));now=index0;index0++;imgjp.repaint();}imgjp.repaint();}else{img0=(Image)(list.get(index0));imgjp.repaint();}break;case KeyEvent.VK_LEFT:if(list.size()!=1){if(index0>0){img0=(Image)(list.get(index0));now=index0;index0--;imgjp.repaint();}if(index0<0){index0=list.size()-1;img0=(Image)(list.get(index0));now=index0;index0--;imgjp.repaint();}}else{index0=list.size()-1;img0=(Image)(list.get(index0));now=index0;index0--;imgjp.repaint();}break;case KeyEvent.VK_ESCAPE:isFull=false;frame0=new JFrame();imgjp=new ImgsPanel();imgjp.setBackground(new Color(51,51,51));frame0.add(imgjp);frame0.setTitle("PicsViewer1.0");frame0.setSize(SWidth,SHeight);frame0.setUndecorated(isFull);frame0.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame0.setIconImage(icon);//设置窗口图标frame0.setVisible(true);break;}if ((e.isControlDown() == true)&& (e.getKeyCode() == KeyEvent.VK_UP)) { isFull=true;frame0=new JFrame();imgjp=new ImgsPanel();imgjp.setBackground(new Color(51,51,51));frame0.add(imgjp);frame0.setTitle("PicsViewer1.0");frame0.setSize(SWidth,SHeight);frame0.setUndecorated(isFull);frame0.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame0.setIconImage(icon);frame0.setVisible(true);}}private void keyReleased(KeyEvent event) {}}public static void main(String[] args){new PicsViewer();}}。

如何在Java中进行图像识别和人工智能模型的部署

如何在Java中进行图像识别和人工智能模型的部署

如何在Java中进行图像识别和人工智能模型的部署在今天的数字化时代,图像识别和人工智能技术已经被广泛应用于各个领域,包括医疗、金融、工业等。

在这篇文章中,我们将重点介绍如何在Java中进行图像识别和人工智能模型的部署。

一、图像识别的基本原理图像识别是指通过计算机技术对图像进行处理和分析,从而实现对图像内容的识别和理解。

图像识别的基本原理包括图像获取、图像预处理、特征提取、模式匹配等步骤。

其中,特征提取是图像识别的核心步骤,它可以通过各种算法和技术来提取图像中的特征信息,比如边缘、纹理、颜色等。

二、Java图像识别的常用库和工具在Java中进行图像识别,常用的库和工具包括OpenCV、JavaCV、DeepLearning4j等。

这些库和工具提供了丰富的图像处理和机器学习功能,可以帮助开发人员快速构建图像识别模型。

1. OpenCVOpenCV是一个开源的计算机视觉库,它提供了丰富的图像处理和计算机视觉算法,包括图像获取、图像预处理、特征提取等功能。

通过OpenCV,开发人员可以快速构建图像识别应用。

2. JavaCVJavaCV是一个基于OpenCV的Java库,它提供了对OpenCV的Java绑定,可以方便地将OpenCV的功能集成到Java应用中。

3. DeepLearning4jDeepLearning4j是一个基于Java的深度学习库,它提供了丰富的深度学习算法,并支持在Java应用中进行模型的训练和部署。

三、人工智能模型的部署在图像识别中,人工智能模型的部署是至关重要的一步。

通常我们会使用深度学习模型来进行图像识别,比如卷积神经网络(CNN)、循环神经网络(RNN)等。

在Java中,可以通过DeepLearning4j来构建和部署深度学习模型。

1.深度学习模型的构建在构建深度学习模型时,我们需要定义模型的结构、损失函数、优化算法等。

通过DeepLearning4j提供的API,可以方便地构建各种深度学习模型。

java调用图片等的相对路径问题

java调用图片等的相对路径问题

import javax.swing.ImageIcon;import java.awt.Image;import java.awt.Toolkit;import java.io.File;import java.applet.Applet;import java.applet.AudioClip;/**** <p>Title: 获取资源</p>* <p>Description: </p>* <p>Copyright: Copyright (c) 2008</p>* <p>Company: </p>* @author landix* @version 1.0*/public class ResourceManager {//系统图片路径private static String IMAGE_RESOURCE_PA TH = "com/landix/oamq/client/images/";//系统音频路径private static String SOUND_RESOURCE_PATH = "com/landix/oamq/client/sound/";//系统文件路径private static String FILE_RESOURCE_PATH = "";private ResourceManager() {}public static ImageIcon getIcon(String imageName) {if (imageName == null) return(null);ImageIcon icon = null;try {//通过类加载器加载图片资源,作为图标对象的参数icon = new ImageIcon(ResourceManager.class.getClassLoader().getResource(IMAGE_RESOURCE_ PATH + imageName));} catch (Exception ex) {System.out.println ("### Exception in getIcon() : \r\n" + IMAGE_RESOURCE_PATH + imageName + " " + ex.toString());}return icon;}public static Image getImage(String imageName) {if (imageName == null) return(null);Image image = null;try {//通过类加载器加载图片资源,作为图标对象的参数image = Toolkit.getDefaultToolkit().getImage(ResourceManager.class.getClassLoader().getResource(IMAGE_RESOURCE_PATH + imageName));} catch (Exception ex) {System.out.println ("### Exception in getIcon() : \r\n" + IMAGE_RESOURCE_PATH + imageName + " " + ex.toString());}return image;}public static AudioClip getSound(String soundName) {if (soundName == null) return(null);AudioClip wowo = null ;try {//通过类加载器加载声音资源,作为声音对象的参数wowo = Applet.newAudioClip(ResourceManager.class.getClassLoader().getResource(SOUND_RESOURCE_PATH + soundName));} catch ( Exception ex ) {System.out.println ("### Exception in getIcon() : \r\n" + SOUND_RESOURCE_PATH + soundName + " " + ex.toString());}return wowo;}public static File getFile(String fileName) {if (fileName == null) return(null);File file = null;try {//通过类加载器加载文件资源,作为文件对象的参数file = new File(ResourceManager.class.getClassLoader().getResource(FILE_RESOURCE_P ATH + fileName).toString());} catch (Exception ex) {System.out.println ("### Exception in getIcon() : \r\n" + FILE_RESOURCE_PATH + fileName + " " + ex.toString());}return file;} }。

java论文学习心得图形界面(精品)

java论文学习心得图形界面(精品)

java图形化用户界面及Applet学习总结一、javaAppletApplication和Applet是Java程序的两种基本形式。

Applet是特殊的Java程序,它不需要专门的解释器来执行它,相对于Java Appliction 的解释器,如JDK的java.exe,VJ++的jview.exe,Java Applet的解释器就是Internet的浏览器,确切地讲就是兼容Java的Internet浏览器。

Applet的工作原理:1,.class和HTML保存在服务器2,当浏览器向服务器请求下载嵌入了Applet的HTML文件时。

3,下载到客户端后,由浏览器解释HTML中的各种标记并显示在用户屏幕上,当浏览器遇到HTML文件中的一个特殊标记时,表明嵌有Applet程序,浏览器会根据Applet名字和位置把其字节码文件从WWW服务器上下载到本地。

4,利用浏览器本身拥有的Java解释器执行该字节码。

Applet类的使用:Java Applet程序必须有一个主类,其父类是系统的Applet类,正是通过这个类才能完成Applet程序与浏览器的配合存在于java.applet包中,从继承结构上说属于用户图形界面的java.awt包,是系统类java.awt.Panel的子类,由于Applet类的特殊,系统专门为它建立了一个java.applet 包Applet类是Panel的子类Panel类的作用:(1)包容和排列其他的界面元素,如按钮、对话框等;(2)响应它所包容范围之内的事件,或把事件向更高层次传递。

Applet类的作用:Applet在继承上述作用的基础上,还具有一些与浏览器和Applet 生命周期有关的专门方法Applet类的主要方法:1、完成初始化操作的init()方法Applet的字节码文件从WWW服务器下载后,浏览器将自动创建一个Applet 类的实例并调用它从Applet类那里继承来的init()方法。

java imageicon用法

java imageicon用法

一、介绍Java ImageIconJava中的ImageIcon是一个用于表示图像图标的类,它可以在Swing应用程序中方便地显示图像。

ImageIcon可以通过文件路径、URL、byte数组等方式来加载图像,可以在标签、按钮、菜单等组件中直接使用。

二、创建ImageIcon对象在Java中,可以通过以下几种方式来创建一个ImageIcon对象:1. 通过文件路径创建ImageIcon可以使用ImageIcon类的构造方法,通过指定文件路径来创建一个ImageIcon对象。

例如:ImageIcon icon = new ImageIcon("path/to/image.jpg");2. 通过URL创建ImageIcon同样可以使用ImageIcon类的构造方法,通过指定URL来创建一个ImageIcon对象。

例如:ImageIcon icon = new ImageIcon(new URL(""));3. 通过字节数组创建ImageIcon还可以使用ImageIcon类的构造方法,通过指定字节数组来创建一个ImageIcon对象。

例如:byte[] imageData = ...; // 从某处获取字节数组ImageIcon icon = new ImageIcon(imageData);三、将ImageIcon应用到组件中在Swing应用程序中,可以将创建好的ImageIcon对象应用到各种组件中,例如标签、按钮、菜单等。

1. 将ImageIcon应用到标签中可以使用JLabel类来显示图像,通过设置JLabel的Icon属性来显示ImageIcon。

例如:JLabel label = new JLabel();label.setIcon(icon);2. 将ImageIcon应用到按钮中可以使用JButton类来显示图像按钮,同样也是通过设置JButton的Icon属性来显示ImageIcon。

Java程序设计GUI 图形用户界面PPT 课件,Java学习和备课必备资料

Java程序设计GUI 图形用户界面PPT 课件,Java学习和备课必备资料
JLayeredPane和JRootPane。
7
9.1 Swing 简介
9.1.1 窗体组件 JFrame 9.1.2 对话框组件 JDialog 9.1.3 对话框组件 JOptionPane 9.1.4 中间容器 JPanel 与 JscrollPane 9.1.5 标签组件 JLabel 9.1.6 文本组件 JTextField 与JTextArea
5
✓Swing包在图形界面设计上比AWT更丰富,更美观。Swing 拥有4倍于AWT的用户界面组件。 ✓是AWT包基础上的扩展,在很多情况下在AWT包的部件前 加上字母J即为Swing组件的名称,如:JFrame、JApplet、 JButton等。 ✓Swing组件都是AWT的Container类的直接子类或间接子类 。
17
9.1.3 对话框组件 JOptionPane
使用上面介绍的 JDialog 可以制作消息提示对话框、确定取消对话框等常用的对话框,但相 对来说要花费一些心思才能做出来,而 JOptionPane 组件直接提供了创建上述几种常用的对 话框的方法,大大方便了编程。 1.showMessageDialog()的静态方法弹出消息对话框,显示一条消息并等待用户确定。常用 的重载方法如下。
4、设置窗体的位置。setLocationRelativeTo(Component c):设置 窗体的相对位置。如果参数为 null,则窗体在屏幕中居中对齐。
5、如果希望在关闭窗体后程序可以随之停止,需要调用方法 setDefaultClose Operation()并传入参数 JFrame.EXIT_ON_CLOSE, 这句代码设置了关闭窗体后会停止程序的运行。 此外还有其他 3 个参数,简述如下。
口");。 2)带参的构造方法:用一个字符串作为参数,此字符串将成为窗体的标题。

JAVA中IconImage()不能显示图片的解决方法

JAVA中IconImage()不能显示图片的解决方法

在JAVA中或者用ImageIcon bug=new ImageIcon("ego.jpg");可能图片会显示不出来.1.以下是一种解决方法:首先是把你的图片和你程序的.class文件放在同一个包中比如说你的程序有个image.java则可以用如下代码代替:package com.test ;public class image{.....String path = "com/test/ego.jpg"; //图片路径,从包开始写ImageIcon bug = new ImageIcon(ClassLoader.getSystemResource(path));.....}2.如果是使用Eclipse开发工具(其他开发工具未知),还有一种解决方法应该说是图片路径的放置方法,虽然不是很清楚原因,不过图片确实可以显示出来.2.1使用原来的JAVA语句,ImageIcon bug=new ImageIcon("ego.jpg");然后把图片的路径放在你的工程目录下比如你的工程名为Test那么就把ego.jpg放在Test文件夹下(Test\ego.jpg)2.2修改路径名,其实就是2.1的延续,可以参照此例放在别的目录下同样,先把你的图片和你程序的.java文件放在同一个包中(注:这里图片可以放在工程下的任意目录,比如和.class文件放在一起,但路径也必须做相应的改变)比如image.java目录结构是Test\src\com\test\image.java则JAVA语句改变为ImageIcon bug=new ImageIcon("src\com\test\ego.jpg");3.方法三:就是使用图片的绝对路径这种方法理论是可行,只是要注意路径引用的格式但是自己没试过,我也不提倡使用绝对路径,因为绝对路径可移植性差,把工程放到其他目录或者电脑上,必须自己修改路径很麻烦,所以相对路径自然有它的好处。

java的imageview使用方法

java的imageview使用方法

java的imageview使用方法ImageView是Android中提供的一种用于显示图片的控件,使用起来非常的方便。

在Java中,也可以使用ImageView对图片进行操作和展示。

下面将介绍一下Java中的ImageView使用方法。

步骤一:创建一个ImageView控件创建ImageView的方法如下:```ImageView imageView = new ImageView();```这里可以根据需要设置控件的宽度、高度、位置等属性。

步骤二:加载图片资源要使ImageView真正展示图片,需要将图片资源加载到ImageView中。

可以使用以下方法将图片资源加载到ImageView中:```Image image = new ImageIcon("图片路径").getImage(); imageView = new ImageView(image);```上面的代码中,首先通过ImageIcon构造函数将图片资源路径传入,得到一个ImageIcon对象,然后通过getImage()方法获取到Image对象,最后将Image对象加载到ImageView中。

步骤三:设置图片大小如果需要对图片的大小进行控制,可以使用以下方法:```imageView.setFitWidth(300);imageView.setFitHeight(200);```上面的代码中,首先使用setFitWidth()方法设置图片的宽度,使用setFitHeight()方法设置图片的高度。

步骤四:设置图片位置在Java中,ImageView控件的位置可以在父控件中设置。

可以使用以下方法将ImageView添加到父控件中:```pane.getChildren().add(imageView);```其中,pane是父控件的名字。

步骤五:显示图片最后一步是显示图片,只需启动Java应用程序即可显示图片。

使用前端框架实现图片预览功能的方法

使用前端框架实现图片预览功能的方法

使用前端框架实现图片预览功能的方法图片预览功能是网页开发中常见的需求,通过这一功能,用户可以在网页上查看并放大图片,提升了用户体验。

为了实现图片预览功能,前端开发者通常会使用前端框架来简化开发过程,并提供更好的交互效果。

本文将介绍如何使用前端框架来实现图片预览功能。

一、选择合适的前端框架在开始实现图片预览功能之前,我们需要选择一个合适的前端框架。

目前市面上常见的前端框架有很多种,例如Vue.js、React.js和Angular等。

这些框架都提供了丰富的功能和工具,可以大大提高开发的效率。

二、引入所选框架选择好前端框架后,我们需要将该框架的相关文件引入到项目中。

通常情况下,我们可以使用CDN方式引入,也可以通过下载框架文件并引入到项目中。

这些文件通常包括框架的核心库以及相关的插件。

三、处理图片文件在实现图片预览功能之前,我们需要先处理图片文件。

在Web开发中,通常我们会将图片文件上传到服务器并保存在特定的位置。

一般来说,我们可以使用后端语言(如PHP、Node.js)来处理图片的上传和保存过程。

四、实现图片预览功能1. HTML结构首先,我们需要在HTML中创建一个容器来展示图片预览。

可以使用一个div元素来作为容器,并为其指定一个id属性,以便我们可以在后续的JavaScript代码中引用。

2. CSS样式为了能够呈现出良好的展示效果,我们需要为图片预览容器添加一些CSS样式。

可以通过设置容器的宽度、高度、边框等样式来定义图片展示的形态,并使其居中显示。

3. JavaScript代码使用前端框架来实现图片预览功能的关键部分是编写相应的JavaScript代码。

不同的前端框架可能有不同的API和用法,下面以Vue.js框架为例,介绍实现图片预览功能的基本步骤。

(1)创建Vue实例首先,我们需要在JavaScript代码中创建一个Vue实例。

可以通过Vue构造函数来创建,传入一个配置对象,其中包含el、data和methods等属性。

Java读取图片文件的类型(MimeType)

Java读取图片文件的类型(MimeType)

Java读取图⽚⽂件的类型(MimeType)⼀、问题描述在项⽬开发的时候,我们经常会遇到⼀类⽂件上传的问题,就是获取图⽚是哪种格式。

很多情况下,很多⼈都是⽤后缀名去判断,如下所⽰。

if(filename.endsWith(".png") || filename.endsWith(".jpg")){//保存图⽚}else{throw new IOException("Error file format !");}但是这种⽅式相当不可靠,我们可以尝试将zip⽂件、rmvb⽂件、css、js修改后缀名位jpg或者png上传,也可以上传到服务器,这就造成我们服务器上出现了脏数据。

此外,对于有些图⽚⽂件,修改成错误的扩展名,有些浏览器可能⽆法显⽰出此图⽚。

⼆、解决⽅案在计算机系统中,媒体类型(MimeType)的⽂件都有【标识符】,zip、图⽚本⾝属于媒体⽂件,因此我们可以通过编解码的⽅式判断图⽚是否合法。

1、判断标⽰⽅法private static boolean isBMP(byte[] buf){byte[] markBuf = "BM".getBytes(); //BMP图⽚⽂件的前两个字节return compare(buf, markBuf);}private static boolean isICON(byte[] buf) {byte[] markBuf = {0, 0, 1, 0, 1, 0, 32, 32};return compare(buf, markBuf);}private static boolean isWEBP(byte[] buf) {byte[] markBuf = "RIFF".getBytes(); //WebP图⽚识别符return compare(buf, markBuf);}private static boolean isGIF(byte[] buf) {byte[] markBuf = "GIF89a".getBytes(); //GIF识别符if(compare(buf, markBuf)){return true;}markBuf = "GIF87a".getBytes(); //GIF识别符if(compare(buf, markBuf)){return true;}return false;}private static boolean isPNG(byte[] buf) {byte[] markBuf = {(byte) 0x89,0x50,0x4E,0x47,0x0D,0x0A,0x1A,0x0A}; //PNG识别符// new String(buf).indexOf("PNG")>0 //也可以使⽤这种⽅式return compare(buf, markBuf);}private static boolean isJPEGHeader(byte[] buf) {byte[] markBuf = {(byte) 0xff, (byte) 0xd8}; //JPEG开始符return compare(buf, markBuf);}private static boolean isJPEGFooter(byte[] buf)//JPEG结束符{byte[] markBuf = {(byte) 0xff, (byte) 0xd9};return compare(buf, markBuf);}2、核⼼⽅法/*** 获取⽂件的mimeType* @param filename* @return*/private static String getMimeType(String filename){try {String mimeType = readType(filename);return String.format("image/%s", mimeType);} catch (IOException e) {e.printStackTrace();}return null;}/*** 读取⽂件类型* @param filename* @return* @throws IOException*/private static String readType(String filename) throws IOException {FileInputStream fis = null;try {File f = new File(filename);if(!f.exists() || f.isDirectory() || f.length()<8) {throw new IOException("the file ["+f.getAbsolutePath()+"] is not image !");}fis= new FileInputStream(f);byte[] bufHeaders = readInputStreamAt(fis,0,8);if(isJPEGHeader(bufHeaders)){long skiplength = f.length()-2-8; //第⼀次读取时已经读了8个byte,因此需要减掉byte[] bufFooters = readInputStreamAt(fis, skiplength, 2);if(isJPEGFooter(bufFooters)){return "jpeg";}}if(isPNG(bufHeaders)){return "png";}if(isGIF(bufHeaders)){return "gif";}if(isWEBP(bufHeaders)){return "webp";}if(isBMP(bufHeaders)){return "bmp";}if(isICON(bufHeaders)){return "ico";}throw new IOException("the image's format is unkown!");} catch (FileNotFoundException e) {throw e;}finally{try {if(fis!=null) fis.close();} catch (Exception e) {}}}/*** 标⽰⼀致性⽐较* @param buf 待检测标⽰* @param markBuf 标识符字节数组* @return返回false标⽰标⽰不匹配*/private static boolean compare(byte[] buf, byte[] markBuf) {for (int i = 0; i < markBuf.length; i++) {byte b = markBuf[i];byte a = buf[i];if(a!=b){return false;}}return true;}/**** @param fis 输⼊流对象* @param skiplength 跳过位置长度* @param length 要读取的长度* @return字节数组* @throws IOException*/private static byte[] readInputStreamAt(FileInputStream fis, long skiplength, int length) throws IOException {byte[] buf = new byte[length];fis.skip(skiplength); //int read = fis.read(buf,0,length);return buf;}3、测试代码正常测试public class ImageType {public static void main(String[] args) {String filename = "oschina.jpg";String type = getMimeType(filename);System.out.println(type);}}输出image/jpeg修改扩展名测试①修改oschina.jpeg为oschina.png②复制oschina.png删除扩展名public class ImageType {public static void main(String[] args) {String filename = "oschina.png";String type = getMimeType(filename);System.out.println(type);filename = "oschina";type = getMimeType(filename);System.out.println(type);}}输出image/jpegimage/jpeg。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

课程设计报告课程名称面向对象程序设计课程设计专班级、设计题目指导教师设计起止时间:2013 年1月7日至2013年1月18日目录1、课程设计概述 (3)2、系统功能描述 (3)3、系统需求分析与设计 (3)3.1系统需求分析 (3)3.2系统设计 (3)3.2.1 系统总体设计 (3)3.2.2 程序详细设计 (4)4、系统测试和使用说明 (7)4.1系统测试 (7)4.2系统使用说明 (13)5、课程设计总结 (13)5.1遇到的问题和解决方法 (13)5.2心得体会 (13)参考文献 (14)附录 (14)1、课程设计概述鉴于目前当今各种繁杂的图片查看器,我们组根据自身的java知识水平,合力开发了一款相对简单的图片查看器软件。

在深入理解java语言的语法规则及其优势的同时,掌握类与方法的构造方法,掌握基于java的各种操作的实现方法,训练对基础知识和基本方法的综合运用能力,增强对算法的理解能力,提高软件设计能力。

在实践中培养独立分析问题和共同解决问题的作风和能力。

2、系统功能描述本次设计的图片查看器实现了在用户选定的文件目录下循环浏览指定后缀的图片文件,并且可以对选择的图片进行放大,缩小,左旋,右旋,另存,彻底删除等操作。

3、系统需求分析与设计3.1 系统需求分析数字产品的更新日新月异,网络通信技术、图像处理技术以及多媒体技术的发展,使我们的生活变得丰富多彩,让我们的生活变得更便捷,图片的保存和查看已经被越来越多的人所重视,并由此得到了长足的发展。

本图片查看器以其简洁明了易操作的特点实现图片查看的基本功能,从而也就满足了用户的基本要求。

3.2 系统设计3.2.1 系统总体设计(1)系统功能分析本系统要用到以下的Java编程技术实现的功能:图像显示功能:用户需要显示图片,这将由图像显示功能来完成。

显示图片的时候,用到了双缓冲技术来消除闪烁问题。

(2)类图系统中用到了一些基本类、实现了一些接口。

系统所用到的类如图1所示:图1 系统类图3.2.2 程序详细设计(1)程序中引用的类①JPanel 类程序中定义了三个Jpanel 类分别是:pathBar, picContainer, ctrBar 。

用于图片查看器的整体布局。

其中pathBar 为顶部路径栏,picContainer 为图片显示区域,ctrBar 为底部控制栏。

②JLabel 类程序中定义了类名为pathInfo 的JLabel 类,用于实现顶部路径栏,底部控制栏按钮的文字显示。

③JButton 类程序中定义了多个JButton 类:openbtn, prebtn, nextbtn, zoominbtn, zoomoutbtn,oripicbtn, angleleftbtn, anglerightbtn,exitbtn,deletebtn,sav;为查看器的按钮。

④Image 类程序中定义了名为pic的Image类用于对被查看的图片的操作。

⑤BufferedImage 类此类为用于显示的缓冲区图像。

在对图像进行操作前,都先将图片读进预设的缓冲区,然后再显示在用户前端,这样虽然速度慢了点,但很好的消除了图片闪烁效果。

⑥Graphics2D 类此类与上面的BufferedImage类共同作用,通过运用双缓冲技术很好的消除屏闪问题。

⑦String类程序中运用了三个不同的String类,从而实现了需要查看的图片的路径的操作,并且在启动图片查看器时,图片的路径能够在路径栏显示出来。

同时还设置了String 数组用于存储用户选定的目录下所有指定格式的图片,这样可以实现循环浏览图片等操作。

(2)程序的构造方法及其实现因为图片查看器可以实现对图片不同的操作,程序中构造了十多个方法以达到其目的。

各构造方法相互联系共同完成图片查看器的各项功能。

各个方法描述如下:①public void init()本方法实现了对图片查看器的界面的整体布局及按钮的初始化。

对页面的总体布局采用了以下主要代码进行实现:setLayout(new BorderLayout());add(pathBar, BorderLayout.NORTH); add(picContainer, BorderLayout.CENTER); add(ctrBar, BorderLayout.SOUTH); resize(640, 400);设置顶部路径栏,及其文字显示;代码如pathBar = new JPanel();pathBar.setLayout(new BorderLayout());pathInfo.setText("图片查看器"); pathBar.add(pathInfo);同时对图片显示区域,底部的控制栏的设置也运用了相似的代码进行实现,在此就不再重复。

各按钮除了“打开”一按钮外,其他的各按钮均设置为false。

这是因为只有“打开”图片后才能进行以下的像循环浏览,旋转,删除等操作。

具体方法的实现见附件。

②public void actionPerformed(ActionEvent)在本方法中主要实现了用户对底部控制栏各按钮的点击后,图片查看器进行的相对应的操作反应。

方法中一开始用JButton click = (JButton) e.getSource();获取按键源,然后根据click与程序设定的已知的类进行比较决定进行相应的反应。

if(click == openbtn);if(click == prebtn && pic != null);等一系列进行判断后,进行或是打开文件open()方法的调用;或是pre()方法的调用;其他各操作也大同小异,在此就不再赘述。

方法的详细代码见附件。

③public void open()该方法实现了对用户选定的文件路径下的后缀为.jpg的图片文件的打开操作。

同时能够对该路径下的一切符合条件的文件进行跟踪处理。

方法中的核心在于一个过滤操作:FileNameExtensionFilter filter = new FileNameExtensionFilter("*.JPG", "jpg");这样就能实现.jpg文件的浏览了。

在选定了图片后,相应的按钮值应该被赋值为ture,以便进行其他的操作。

若没有选定图片则显示“没有选择图片”。

④public void save() throws IOException该方法是为了满足用户希望对图片进行另外存储的操作,通过用户自己的选择重新选定图片的存储路径。

详细实现见附件中代码。

⑤ public void pre()及public void next()Pre与next方法实现了对当前图片的上一张下一张的浏览。

因为在第一次打开文件时就将该路径下所有符合要求的图片存储在String[] pics中。

通过if(i == 0) { i = pics.length-1;} else { i --;}其中i为当前的图片位置数。

通过dir = path + "\\" + pics[i];获得文件的路径,然后调用loadImage(dir);此方法将在后面介绍;与上面的方法相对应的是此方法实现了对当前图片下一张的浏览,实现原理与上相同,if(i == pics.length-1) {i = 0;} else {i++;}通过调用loadImage(dir);一方法实现。

⑥public void picTrans()如果bufImage为空则直接返回,之后进行过滤图像操作,2D仿射变换,设置仿射变换的比例因子transform.setToScale(scaleX, scaleY); 创建仿射变换操作对象,过滤图像,将目标图像存在filteredBufImage中,然后显示。

⑦public void zoomin()此方法实现了对当前的图片进行按设置比例缩小操作。

在进行缩小操作前,先对图片的大小进行判断,看是否已经缩小到最小,若最小则显示提示信息“已经缩至最小!”;否则进行缩小操作。

在此过程中调用了picTrans()方法,以及repaint(); 重绘组件的方法。

⑧public void oripic()及public void delete()方法实现了将放大或缩小后的图片大小还原的操作。

同时也调用了picTrans()方法,以及repaint(); 重绘组件的方法。

具体的picTrans()方法将在下面详细描述。

此方法具体实现见附件;public void delete()方法将图片彻底删除,删除后图片彻底被粉碎,回收站里面都不能找到。

因此要慎用此按钮。

⑨public void angleleft() 及public void angleright()方法每次对图片进行45°的向左向右的旋转操作。

radius += -Math.PI / 2;用以控制,而这些操作后,每次都应oripicbtn.setEnabled(true),也就是要将还原按钮赋值为真。

⑩public void loadImage(String fileName) 及public void exit()前一个方法通过增加图像到加载器中,创建原始缓冲区图像,创建bufImage的图形环境:bufImageG = bufImage.createGraphics();传输源图像数据到缓冲区图像中一些列的操作,对图片进行了加载操作;public void exit()方法是退出查看器的方法。

4、系统测试和使用说明4.1 系统测试使用eclipse运行程序时,会出现applet小程序的界面。

并显示程序已启动。

显示如图2:图2 程序开始时的界面单击“打开”按钮后的效果图如图3:图3 选择图片文件查看图片的效果图如图4:多次单击放大按钮后的效果图如图5所示:多次单击缩小按钮后效果图如图6所示:单击原始按钮的效果图如图7所示:单击上一幅的效果图如图8所示:单击上一幅的效果图如图9所示:单击左旋按钮的效果如图10所示:单击右旋按钮的效果如图11所示:其他功能显示效果图如图12所示:图12 其他功能效果显示4.2 系统使用说明由于本组的知识水平能力有限,在制作此图片查看器时有许多有待完善的地方,因此用户在使用时应注意慎重使用删除与保存按钮,另外其他的操作只要单击按钮则行。

特别值得注意原始按钮只有在对图片已经进行了放大或缩小的操作后其才是有效的。

5、课程设计总结5.1 遇到的问题和解决方法在用JAVA编写程序时,我们遇到了很多困难,对很多的接口,类,方法都不是很熟悉,只好采用查看API文档,一个一个进行对照学习,同时也上网查看了有关图片查看器的相关描述,还向同学请教了,翻阅了相关的书籍。

相关文档
最新文档