这里有一个新手,但这是一个小的测试代码,解释了我的问题。打印的值为-1。我对如何返回图像的像素宽度没有丝毫的线索,我在这里遗漏了一些非常明显的东西吗?整个ImageObserver的东西没有任何意义!
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
class imagetest2 extends JPanel {
Image i =Toolkit.getDefaultToolkit().getImage(/*image*/);
public int test(){
int x = i.getWidth(null);
return x;
}
}
class imagetest {
public static void main(String args[]){
imagetest2 tesst = new imagetest2();
System.out.print(tesst.test());
}
}
答案 0 :(得分:5)
Toolkit.getDefaultToolkit().getImage()
可能异步加载几乎不是您想要的图像。
使用ImageIO
和BufferedImage
而不是getWidth()
和getHeight()
而不是ImageObserver
参数(尽管其他的也可以使用null
通过BufferedImage image = ImageIO.read("/*image*/");
int width = image.getWidth();
):
{{1}}
答案 1 :(得分:0)
您只是使用了错误的类。有一种更简单的方法来实现你想要的,这将做到这一点:
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.io.File;
import javax.imageio.ImageIO;
class ImageTest
{
BufferedImage img;
public static int getWidthFromImage(String filename)
{
BufferedImage image;
int width;
try
{
image = ImageIO.read(new File(filename));
return image.getWidth();
}
catch(IOException e)
{
System.out.println("Something terrible happened! " + e.getMessage());
e.printStackTrace();
}
return -1;
}
public static void main(String args[])
{
System.out.print("The width of the image in pixels is: " + getWidthFromImage(args[0]));
}
}