如何用数值表示图片 我想通过读取一个图片,将读到的图片信息存在数组中,我要如何用java实现。谢谢。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 其实说白了就是把图片的路径保存到数据库,<img src="">,引号里就是你数据库保存的数据,也就是之前说的路径 看看这个,能否有帮助:import java.awt.Color;import java.awt.Graphics;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.image.BufferedImage;import java.awt.image.ConvolveOp;import java.awt.image.Kernel;import javax.swing.ImageIcon;import javax.swing.JFileChooser;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JMenu;import javax.swing.JMenuBar;import javax.swing.JMenuItem;import javax.swing.JScrollPane;import javax.swing.JSplitPane;public class TryImage extends JFrame implements ActionListener{ private static final long serialVersionUID = 1L; //创建显示源图像的标签,并将其放置到滚动窗格中 JLabel jls=new JLabel(); JScrollPane jspz=new JScrollPane(jls); //创建显示目标图像的标签,并将其放置到滚动窗格中 JLabel jlt=new JLabel(); JScrollPane jspy=new JScrollPane(jlt); //创建分割窗格,并设置各子窗格中显示的控件 JSplitPane jsp=new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,jspz,jspy); //创建文件选择器 JFileChooser jfc=new JFileChooser("d:\\"); //创建菜单栏、菜单以及菜单项 JMenuBar jmb=new JMenuBar(); JMenu jm=new JMenu("卷积滤镜处理"); JMenu jm1=new JMenu("选择图片"); JMenuItem item1=new JMenuItem("图片"); JMenuItem item2=new JMenuItem("退出"); JMenuItem[] jmi={new JMenuItem("加强边缘"),new JMenuItem("锐化"), new JMenuItem("模糊"),new JMenuItem("浮雕")}; //创建表示不同滤镜的卷积矩阵数组 float[][] data = { //加强边缘 {0f,-1f,0f, -1f,5f,-1f, 0f,-1f,0f}, //锐化 {-0.125f,-0.125f,-0.125f, -0.125f,2f,-0.125f, -0.125f,-0.125f,-0.125f}, //模糊 {0.09375f,0.09375f,0.09375f, 0.09375f,0.25f,0.09375f, 0.09375f,0.09375f,0.09375f}, //浮雕 {2f,0f,2f, 0f,0f,0f, 2f,0f,-5f} }; //定义一个图标引用 ImageIcon ii; public TryImage() { //加载选择的图片到图标对象中 item1.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) { ii=chooserFile(); //将图片设置到源标签中 jls.setIcon(ii); //将处理后的图片设置到目标标签中 jlt.setIcon(ii); }}); //设置两个标签的水平、垂直对齐方式 jls.setVerticalAlignment(JLabel.CENTER); jls.setHorizontalAlignment(JLabel.CENTER); jlt.setVerticalAlignment(JLabel.CENTER); jlt.setHorizontalAlignment(JLabel.CENTER); jsp.setOneTouchExpandable(true); //设置分隔条的宽度以及初始位置 jsp.setDividerLocation(500); jsp.setDividerSize(10); //将分割窗格添加到窗体中 this.add(jsp); //循环将菜单项添加进菜单,并为每个菜单项注册动作事件监听器 for(int i=0;i<jmi.length;i++) { jm.add(jmi[i]); jmi[i].addActionListener(this); } //将菜单添加进菜单栏,并将菜单栏添加进窗体 item2.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) { System.exit(0); } }); jm1.add(item1); jm1.addSeparator(); jm1.add(item2); jmb.add(jm); jmb.add(jm1); this.setJMenuBar(jmb); //设置窗体的标题、大小位置以及可见性 this.setTitle("卷积滤镜处理示例"); this.setBounds(0,0,1000,500); this.setVisible(true); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } //实现ActionListener接口中的事件处理方法 public void actionPerformed(ActionEvent e) { try{ for(int i=0;i<jmi.length;i++) { if(e.getSource()==jmi[i]) {//对事件源进行判断,决定使用哪一种卷积矩阵进行处理 //获取待处理图像的宽度与高度 int width=ii.getImage().getWidth(null); int height=ii.getImage().getHeight(null); //创建两个BufferedImage对象分别用来放置待处理图像与处理后的图像 BufferedImage sourceBuf= new BufferedImage(width,height,BufferedImage.TYPE_INT_ARGB); BufferedImage targetBuf= new BufferedImage(width,height,BufferedImage.TYPE_INT_ARGB); //将待处理图像绘制加载到源BufferedImage对像中 Graphics g=sourceBuf.getGraphics(); g.drawImage(ii.getImage(),0,0,Color.white,null); //创建封装卷积矩阵的Kernel对象 Kernel kernel = new Kernel(3,3,data[i]); //创建ConvolveOp对象并进行卷积处理 ConvolveOp co = new ConvolveOp(kernel,ConvolveOp.EDGE_NO_OP,null); co.filter(sourceBuf,targetBuf); //获取处理后的图像并设置到目标标签中 jlt.setIcon(new ImageIcon(targetBuf)); } } } catch(Exception a){ } } //加载选中图片的方法 public ImageIcon chooserFile() { //弹出文件选择器 jfc.showOpenDialog(this); //获取选择文件的路径 String dir=(jfc.getSelectedFile()!=null)?(jfc.getSelectedFile().getPath()):null; if(dir!=null&&!dir.equals("")) { //按指定的路径加载图片到图标对象中并返回 return new ImageIcon(dir); } return null; } public static void main(String[] args) { //创建TryImage窗体对象 new TryImage(); }} 读取的是字节流是吧.用byte数组吧. 关于byte 问题 数据流输入怎么实现 import java.awt.*;import java.awt.event.*; 这两句什么意思 递归问题思考 如何使用皮肤 看一下输出结果为什么是true?? 我想删除 扩展名 是 *.txt 的文件 What is a String literal? and String s1 ="yy" 和String s2 = new String("yy")的区别? 怎样用JAVA完成自动登陆?? JBuilder安装问题??? JSP+TOMCAT+SQL2000如何连接数据库。急急急~ ==与equals
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.BufferedImage;
import java.awt.image.ConvolveOp;
import java.awt.image.Kernel;import javax.swing.ImageIcon;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JScrollPane;
import javax.swing.JSplitPane;
public class TryImage extends JFrame implements ActionListener{
private static final long serialVersionUID = 1L;
//创建显示源图像的标签,并将其放置到滚动窗格中
JLabel jls=new JLabel();
JScrollPane jspz=new JScrollPane(jls);
//创建显示目标图像的标签,并将其放置到滚动窗格中
JLabel jlt=new JLabel();
JScrollPane jspy=new JScrollPane(jlt);
//创建分割窗格,并设置各子窗格中显示的控件
JSplitPane jsp=new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,jspz,jspy);
//创建文件选择器
JFileChooser jfc=new JFileChooser("d:\\");
//创建菜单栏、菜单以及菜单项
JMenuBar jmb=new JMenuBar();
JMenu jm=new JMenu("卷积滤镜处理");
JMenu jm1=new JMenu("选择图片");
JMenuItem item1=new JMenuItem("图片");
JMenuItem item2=new JMenuItem("退出");
JMenuItem[] jmi={new JMenuItem("加强边缘"),new JMenuItem("锐化"),
new JMenuItem("模糊"),new JMenuItem("浮雕")};
//创建表示不同滤镜的卷积矩阵数组
float[][] data =
{
//加强边缘
{0f,-1f,0f,
-1f,5f,-1f,
0f,-1f,0f},
//锐化
{-0.125f,-0.125f,-0.125f,
-0.125f,2f,-0.125f,
-0.125f,-0.125f,-0.125f},
//模糊
{0.09375f,0.09375f,0.09375f,
0.09375f,0.25f,0.09375f,
0.09375f,0.09375f,0.09375f},
//浮雕
{2f,0f,2f,
0f,0f,0f,
2f,0f,-5f}
};
//定义一个图标引用
ImageIcon ii;
public TryImage()
{
//加载选择的图片到图标对象中
item1.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
ii=chooserFile();
//将图片设置到源标签中
jls.setIcon(ii);
//将处理后的图片设置到目标标签中
jlt.setIcon(ii);
}});
//设置两个标签的水平、垂直对齐方式
jls.setVerticalAlignment(JLabel.CENTER);
jls.setHorizontalAlignment(JLabel.CENTER);
jlt.setVerticalAlignment(JLabel.CENTER);
jlt.setHorizontalAlignment(JLabel.CENTER);
jsp.setOneTouchExpandable(true);
//设置分隔条的宽度以及初始位置
jsp.setDividerLocation(500);
jsp.setDividerSize(10);
//将分割窗格添加到窗体中
this.add(jsp);
//循环将菜单项添加进菜单,并为每个菜单项注册动作事件监听器
for(int i=0;i<jmi.length;i++)
{
jm.add(jmi[i]);
jmi[i].addActionListener(this);
}
//将菜单添加进菜单栏,并将菜单栏添加进窗体
item2.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) {
System.exit(0);
}
});
jm1.add(item1);
jm1.addSeparator();
jm1.add(item2);
jmb.add(jm);
jmb.add(jm1);
this.setJMenuBar(jmb);
//设置窗体的标题、大小位置以及可见性
this.setTitle("卷积滤镜处理示例");
this.setBounds(0,0,1000,500);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
//实现ActionListener接口中的事件处理方法
public void actionPerformed(ActionEvent e)
{
try{
for(int i=0;i<jmi.length;i++)
{
if(e.getSource()==jmi[i])
{//对事件源进行判断,决定使用哪一种卷积矩阵进行处理
//获取待处理图像的宽度与高度
int width=ii.getImage().getWidth(null);
int height=ii.getImage().getHeight(null);
//创建两个BufferedImage对象分别用来放置待处理图像与处理后的图像
BufferedImage sourceBuf=
new BufferedImage(width,height,BufferedImage.TYPE_INT_ARGB);
BufferedImage targetBuf=
new BufferedImage(width,height,BufferedImage.TYPE_INT_ARGB);
//将待处理图像绘制加载到源BufferedImage对像中
Graphics g=sourceBuf.getGraphics();
g.drawImage(ii.getImage(),0,0,Color.white,null);
//创建封装卷积矩阵的Kernel对象
Kernel kernel = new Kernel(3,3,data[i]);
//创建ConvolveOp对象并进行卷积处理
ConvolveOp co = new ConvolveOp(kernel,ConvolveOp.EDGE_NO_OP,null);
co.filter(sourceBuf,targetBuf);
//获取处理后的图像并设置到目标标签中
jlt.setIcon(new ImageIcon(targetBuf));
}
}
}
catch(Exception a){
}
}
//加载选中图片的方法
public ImageIcon chooserFile()
{
//弹出文件选择器
jfc.showOpenDialog(this);
//获取选择文件的路径
String dir=(jfc.getSelectedFile()!=null)?(jfc.getSelectedFile().getPath()):null;
if(dir!=null&&!dir.equals(""))
{
//按指定的路径加载图片到图标对象中并返回
return new ImageIcon(dir);
}
return null;
}
public static void main(String[] args)
{
//创建TryImage窗体对象
new TryImage();
}
}