问:下面是Netbeans中Jframe的Java代码。它是关于要显示到Jframe的附件或图像的代码。我希望在这里有人可以帮助我
1.如何调整已经附加并显示到Jframe的图像的大小(标准化我上传的大小)?
2.如何查看调整大小的图像并查看图像的大尺寸或原始尺寸?
3.如何将图像或文件附件保存在JFrame中,以便在我关闭运行窗口后仍将文件或图像保留在其中,并且可以根据需要将其删除?
谢谢。我感谢您的帮助。尽快。
****************************************************** ****************************************************** ***************
private void jButton_attachimageActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
JFileChooser chooser=new JFileChooser();
chooser.showOpenDialog(null);
File f=chooser.getSelectedFile();
String filename=f.getAbsolutePath();
jTextField_path.setText(filename);
ImageIcon icon=new ImageIcon(filename);
jLabel_image.setIcon(icon);
}
答:您可以使用以下代码来调整大小和上传。
导入java.awt.Graphics2D;
导入java.awt.Image;
导入java.awt.Toolkit;
导入java.awt.image.BufferedImage;
导入java.awt.image.DataBufferByte;
导入java.awt.image.WritableRaster;
导入java.io.File;
导入javax.swing.ImageIcon;
公共类ImageUpload1 {
私有静态最终int IMG_ WIDTH = 120;
私有静态最终int IMG_ HEIGHT = 120;
ImageIcon照片;
WritableRaster栅格;
DataBufferByte数据;
文件图像;
void reSize(){
尝试{
image = new File(“ image path”);
BufferedImage originalImage = ImageIO.read(image);
int type = originalImage.getType()== 0吗?BufferedImage.TYPE_ INT_ ARGB:originalImage.getType();
BufferedImage resizeImageJpg = resizeImage(originalImage,type);
照片=新ImageIcon(toImage(resizeImageJpg));
//将缓冲的图像转换为字节数组
光栅= resizeImageJpg.getRaster();
数据=(DataBufferByte)raster.getDataBuffer();
保存();
} catch(IOException e){
System.out.println(e.getMessage());
}
}
公共图像toImage(BufferedImage bufferedImage){
返回Toolkit.getDefaultToolkit()。createImage(bufferedImage.getSource());
}
无效Save(){
//使用Connection接口声明连接
连接connection = null;
//用机器以指定格式创建连接URL的字符串
//名称,端口号和数据库名称。
字符串连接URL =“ jdbc:mysql:// localhost:3306 / dbname”;
//声明一个resultSet,该表作为通过执行指定操作而生成的表
// sql查询。
ResultSet rs = null;
//声明语句。
PreparedStatement psmnt = null;
尝试{
//加载JDBC驱动程序“ com.mysql.jdbc.Driver”
Class.forName(“ com.mysql.jdbc.Driver”)。newInstance();
//通过使用getConnection()方法创建连接
//字符串类型的连接URL,用户名和密码的参数
//连接到数据库。
connection = DriverManager.getConnection(connectionURL,“ root”,“ dbpass”);
// prepareStatement()用于创建语句对象
//用于将sql语句发送到指定的数据库。
psmnt = connection.prepareStatement(“插入到save_图像(名称,城市,图像,电话)中”
+“ values(?)”);
byte [] extractBytes = data.getData();
psmnt.setBytes(1,extractBytes);
// executeUpdate()方法执行指定的sql查询。这里这个查询
//从指定地址插入数据和图像。
int s = psmnt.executeUpdate();
如果(s> 0){
System.out.println(“上传成功!”);
}其他{
System.out.println(“上传图片失败。”);
}
connection.close();
psmnt.close();
} //在朗姆酒期间捕获是否发现任何异常。
catch(ex例外){
System.out.println(“发现一些错误:” + ex);
}
}
public BufferedImage resizeImage(BufferedImage originalImage,int type){
BufferedImage resizeImage = new BufferedImage(IMG_ WIDTH,IMG_ HEIGHT,类型);
Graphics2D g = resizedImage.createGraphics();
g.drawImage(originalImage,0,0,IMG_ WIDTH,IMG_ HEIGHT,null);
g.dispose();
返回resizedImage;
}
/ **
* @param args命令行参数
* /
公共静态void main(String args []){
新的ImageUpload1()。reSize();
}
}