下面的java代码现在在标签和按钮中显示一个imageIcon。按下按钮时,它会绘制缓冲图像并导出该图像。导出的图像与图像图标中的图像无关。
我不想绘制图像,而是希望像绘制和导出图像一样导出ImageIcon中的图像。因此,我认为图像图标中的图像必须转换为缓冲图像,然后导出为400宽和400高的图像。
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;
import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.*;
public class second {
JFrame f;
second() throws IOException{
//use paintCompent
f=new JFrame();
JButton b1 = new JButton("Action Listener");
JLabel b2=new JLabel("");;
b2.setIcon(new ImageIcon(new ImageIcon("/Users/johnzalubski/Desktop/javaCode/cd.jpg").getImage().getScaledInstance(400, 400, Image.SCALE_DEFAULT)));
f.add(b1,BorderLayout.NORTH);
f.add(b2,BorderLayout.CENTER);
b1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
int width = 300;
int height = 300;
BufferedImage buffIMg = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
Graphics2D g2d = buffIMg.createGraphics();
g2d.setColor(Color.white);
g2d.fillRect(0, 0, width, height);
g2d.setColor(Color.black);
g2d.fillOval(0,0,width,height);
g2d.setColor(Color.orange);
g2d.drawString("Jessica ALba:", 55, 111);
g2d.dispose();
File file = new File("aa.png");
try {
ImageIO.write(buffIMg, "png",file);
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
});
f.setSize(400,400);
f.setVisible(true);
}
public static void main(String[] args) throws IOException {
new second();
}
}
在
BufferedImage unscaledButtonImage;
try {
unscaledButtonImage = ImageIO.read(
new File("/Users/johnzalubski/Desktop/javaCode/cd.jpg"));
} catch (IOException e) {
throw new RuntimeException(e);
}
要缩放它,使用缩放Graphics.drawImage方法:
BufferedImage scaledButtonImage =
new BufferedImage(400, 400, unscaledButtonImage.getType());
Graphics g = scaledButtonImage.createGraphics();
g.drawImage(unscaledButtonImage, 0, 0, 400, 400, null);
g.dispose();
您可以从中轻松制作ImageIcon:
b2.setIcon(new ImageIcon(scaledButtonImage));
但是在那之后你不需要图像图标,因为你有原始的BuffereImage。
问题内容: 我一直在尝试将a转换为…而且我没有运气。 我有一个预先存在的ImageIcon,对于存在的大量BufferedImage操作,需要将其转换为Buffered Image。 我发现了几种方法,但是所有方法都占用大量CPU。 问题答案: 有什么问题:
我有一个JSON对象,我正在将它转换成一个,并在这里进行一些处理。稍后,我想将相同的缓冲区数据转换为有效的JSON对象。 我的工作节点V6.9.1 下面是我尝试过的代码,但当我转换回JSON并且无法打开此对象时,我得到了。 所以我试着用检查的方式打印整个物体 如果我试着像数组一样读取它 我试图解析它也抛出SynTaxError:意外令牌o在JSON在位置2 我需要像我创建的那样将其视为真实对象(我
在Python脚本中,,我使用协议缓冲区使用以下方法来建模数据: 在. proto文件中定义消息格式。 使用协议缓冲区编译器。 使用Python协议缓冲区API在. py模块中写入和读取消息。 我想在appengine上实现Cloud Endpoints框架,该框架导入,并使用前面提到的Python脚本,但是Cloud Endpoints使用ProtoRPC,而不是“标准”协议缓冲区。 我的App
我正在使用JOGL,但这个问题一般适用于OpenGL。似乎存在类似的问题,但它们要么针对GLSL代码,要么与复制帧缓冲区的内容有关,要么是一般建议-使用帧缓冲区对象,而不是。 我正在做一些阴影映射。如何使用帧缓冲对象将深度通道直接渲染到纹理? 能否请你贴一段初始化纹理和帧缓冲对象的代码,以及渲染场景前初始化一切的代码? 目前,我使用<code>glCopyTexSubImage2D<code>。我
缓冲区溢出的漏洞随着冯·诺依曼 1 构架的出 现就已经开始出现了。 在1988年随着莫里斯互联网蠕虫的广泛传播他们开始声名狼藉。不幸的是, 同样的这种攻击一直持续到今天。 到目前为止,大部分的缓冲区溢出的攻击都是基于摧毁栈的方式。 大部分现代计算机系统使用栈来给进程传递参数并且存储局部变量。 栈是一种在进程映象内存的高地址内的后进先出(LIFO)的缓冲区。 当程序调用一个函数时一个新的“栈帧”会被
问题内容: 我有一个Image对象,我想将其转换为Icon或ImageIcon以添加到JTextPane。我将如何去做呢?(这是在JAVA中) 澄清:我的“图像”是图像对象的实例,而不是文件。 问题答案: 这有什么错?