java载入一张图片,但是图片太大了,怎样只显示指定某一部分? 新手,希望能附上一些代码。在线等答案。
画指定区域
public abstract boolean drawImage(Image img,
int x,
int y,
int width,
int height,
ImageObserver observer)绘制指定图像中已缩放到适合指定矩形内部的图像。
图像绘制在此图形上下文坐标空间的指定矩形内部,并且如果需要,则进行缩放。透明像素不影响该处已戚圆尺存在的像素。
此方法在任何情况下都立刻返回,甚至在整个图像没有为当前输出设备完成高高缩放、抖动或转换的情况下也是如此。如果当前的输出表示尚未完成,则 drawImage 返回 false。随着更多的图像可用,装入图像的进程将通过调用图像观察者的 imageUpdate 方法来通知它。
图像的缩放版本不一定立刻是可用的,因为已经为此输出设备构造了图像的非缩放版本。每种大小的图像可以被分别缓存,并由各自图像产生序列中的原始数据生成。
参数:
img – 要绘制的指定图像。如果 img 为 null,则此方法不执行任何动作。
x – x 坐腔友标。
y – y 坐标。
width – 矩形的宽度。
height – 矩形的高度。
observer – 当转换了更多图像时要通知的对象。
Java:Image和BufferedImage的区别是什么?
Image是一个抽象类,BufferedImage是Image的实现类。
Image和陵世BufferedImage的主要作用就是将一副图片加载到内存中。
BufferedImage 子类描述具有可访问图像数据缓冲区的 Image。BufferedImage 由图像数据的 ColorModel 和 Raster 组成。Raster 的 SampleModel 中 band 的数量和类型必须与 ColorModel 所要求的数量和类型相匹配,以表示其颜色和 alpha 分量。所有 BufferedImage 对象的左上角坐标都为 (0, 0)。因此,用来构造咐汪兄 BufferedImage 的任何 Raster 都必须满足:minX=0 且 minY=0。
Java将一副图片加载到内存中的方法是:
String imgPath = “D://demo.bmp”;
BufferedImage image = ImageIO.read(new FileInputStream(imgPath));
该方法BufferedImage 可以获得图片的详细信息,例如:获得图片的宽度:image.getWidth(null);图片只有加载内存中才能对图片进行进一步衡袭的处理。
java的BufferedImage类的getSubimage()方法的问题
getSubimage方法是进行图灶誉片裁剪悉轿。
举例:
public static void main(String[] args) {
try {
//从特定文件载睁辩肆入
BufferedImage bi = ImageIO.read(new File(“c:\\test.jpg”));
bi.getSubimage(0, 0, 10, 10);//前两个值是坐标位置X、Y,后两个是长和宽
} catch (IOException e) {
e.printStackTrace();
}
}