Tag: bufferedimage

将RGB值转换为整数

因此,在BufferedImage ,您会收到一个具有表示其中的RGB值的整数。 到目前为止,我使用以下来从中获取RGB值: // rgbs is an array of integers, every single integer represents the // RGB values combined in some way int r = (int) ((Math.pow(256,3) + rgbs[k]) / 65536); int g = (int) (((Math.pow(256,3) + rgbs[k]) / 256 ) % 256 ); int b = (int) ((Math.pow(256,3) + rgbs[k]) % 256); 到目前为止,它的工作。 我需要做的是弄清楚如何获得一个整数,所以我可以使用BufferedImage.setRGB() […]

如何在另一个图像上绘制图像?

我有一个关于随机城市交通networking模拟的Java项目,我设法find了实现这个项目的方法,所以我把每个交叉点分成了一个基本上是扩展的JPanel类(叫做家乐福)的部分。一切工作都很顺利,直到我陷入如何绘制车辆并使它们通过道路。 所以我的问题是如何绘制一个图像(车辆图像)在另一个图像(道路)?

Java将Image转换成BufferedImage

在StackOverflow上已经有这样的问题了,接受的答案是“cast”: Image image = ImageIO.read(new File(file)); BufferedImage buffered = (BufferedImage) image; 在我的程序中,我尝试: final float FACTOR = 4f; BufferedImage img = ImageIO.read(new File("graphic.png")); int scaleX = (int) (img.getWidth() * FACTOR); int scaleY = (int) (img.getHeight() * FACTOR); Image image = img.getScaledInstance(scaleX, scaleY, Image.SCALE_SMOOTH); BufferedImage buffered = (BufferedImage) image; 不幸的是我得到运行时错误: sun.awt.image.ToolkitImage不能转换为java.awt.image.BufferedImage 显然铸造不起作用。 问题是:什么是(或有)正确的方式转换图像到BufferedImage?

在每次渲染之前,BufferedImage不会被清除

我试图通过我正在观看的教程学习如何构build一个简单的游戏。 到目前为止,一切都很好,但是当我移动图像时,前面的图像不会被擦除或丢弃。 我不确定究竟是什么错,或为什么发生。 我有3个类,一个主类,玩家类和一个bufferimageloader类。 主要课程: import java.awt.Canvas; import java.awt.Graphics; import java.awt.image.BufferStrategy; import java.awt.image.BufferedImage; import java.io.IOException; import javax.swing.JFrame; public class Main extends Canvas implements Runnable { private boolean running = false; private Thread thread; private BufferedImage player; private Player p; public void init(){ // load and initiliaze BufferedImageLoader loader = new BufferedImageLoader(); try { player = […]

在JPanel中旋转BufferedImage

我想旋转一个BufferedImage并将其显示在一个JLabel (这是一个JPanel )。 目前的结果产生一个黑色背景旋转10度的白色方形,但图像不存在于广场内。 我知道myPicture不是空白的,因为当不旋转的时候, myPicture本身在JPanel内部正确显示。 这里是代码: int w = myPicture.getWidth(); int h = myPicture.getHeight(); BufferedImage newImage = new BufferedImage(w, h, myPicture.getType()); Graphics2D graphic = newImage.createGraphics(); graphic.rotate(Math.toRadians(10), w/2, h/2); graphic.drawImage(myPicture, null, 0, 0); picLabel.setIcon(new ImageIcon(newImage));

你如何克隆一个BufferedImage

我有一个有许多bufferedimages的对象,我想创build一个新的对象,将所有的bufferedimages拷贝到新的对象中,但这些新的图像可能会被改变,我不希望原始的对象图像被改变新的对象图像。 这是清楚的吗? 这是可能做到的,任何人都可以提出一个好的方法来做到这一点吗? 我曾经想过getSubImage,但是读到的地方是,任何对子图像的改变都会被重新选回父图像。 我只是想能够得到一个新的完全分离的复制或克隆的BufferedImage

如何使用RescaleOp设置图像的大小

我正在写一个testing应用程序。 为图像设置Alpha我使用paintComponent方法。 观看下一个片段… public class TestImage extends JLabel{ public void paintComponent( Graphics g ) { super.paintComponent( g ); Graphics2D g2d=(Graphics2D)g; g2d.drawImage(this.bImage, rop, 0, 0); } public void setRescaleOp(RescaleOp rop){this.rop=rop;} } 如你看到的, g2d.drawImage(this.bImage,rop,0,0); 不允许设置宽度和高度,就像我使用g.drawImage(bImage,0,0,width,height,null); 所以问题是…在这种情况下如何设置bImage的宽度和高度? 任何有用的评论表示赞赏 安德鲁

使用Graphics2D覆盖BufferedImage上的文本并返回一个BufferedImage

我查了类似命名的问题,但是他们没有回答这个用例。 基本上,我是覆盖一些文本(文本)在给定的坐标(x,y)我有一个包中的下面的function; protected BufferedImage Process2(BufferedImage image){ Graphics2D gO = image.createGraphics(); gO.setColor(Color.red); gO.setFont(new Font( "SansSerif", Font.BOLD, 12 )); gO.drawString(this.text, this.x, this.y); System.err.println(this.text+this.x+this.y); return image; } 我觉得我很明显错过了一些东西。 我可以findGraphics2D的每一个引用是处理游戏或直接写入文件,但我只想要一个BufferedImage返回。 与覆盖“渲染” 在当前的代码中,图像显示在最后不变。 谢谢!

Java – 从图像获取像素数组

我正在寻找从BufferedImage获取像素数据(intforms为int[][] )的最快方法。 我的目标是能够使用int[x][y]从图像中处理像素(x, y) 。 我发现的所有方法都不这样做(大多数方法返回int[] s)。

JComponents不显示与图片背景?

我的组件没有显示出来。 我该如何解决? 码: import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import javax.imageio.ImageIO; import javax.swing.*; public class login implements ActionListener{ JTextField gusername; JTextField gpassword; static String username; static String password; void logini() throws IOException { JFrame window = new JFrame("Login"); window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); window.setSize(300, 250); window.setResizable(false); window.setVisible(true); JPanel mainp = new JPanel(new GridBagLayout()); […]