java载入一张图片,但是图片太大了,怎样只显示指定某一部分? 新手,希望能附上一些代码。在线等答案。
4个回答
展开全部
画指定区域
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 - 当转换了更多图像时要通知的对象。
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 - 当转换了更多图像时要通知的对象。
更多追问追答
追问
能稍微写下代码吗~?
而且这个函数是不是会自动缩放~?我不要缩放,就要原比例
追答
这个不会自动缩放,只是画指定区域
展开全部
把图片缩放
public BufferedImage fixPic(int height, int width) {
BufferedImage read = ImageIO.read(new File(imgPath));
Image scaledInstance = img.getScaledInstance(width, height, Image.SCALE_DEFAULT);
BufferedImage newimg = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
Graphics graphics = newimg.getGraphics();
graphics.drawImage(scaledInstance, 0, 0, null);
graphics.dispose();
return newimg;
}
public BufferedImage fixPic(int height, int width) {
BufferedImage read = ImageIO.read(new File(imgPath));
Image scaledInstance = img.getScaledInstance(width, height, Image.SCALE_DEFAULT);
BufferedImage newimg = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
Graphics graphics = newimg.getGraphics();
graphics.drawImage(scaledInstance, 0, 0, null);
graphics.dispose();
return newimg;
}
追问
亲~我不要缩放,就是按原比例,我其实想做游戏,把地图存好,然后通过滚动屏幕显示每个区域
追答
不缩放更好办
public BufferedImage fixPic(int height, int width) {
BufferedImage read = ImageIO.read(new File(imgPath));
BufferedImage newimg = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
Graphics graphics = newimg.getGraphics();
graphics.drawImage(read, 0, 0, null);
graphics.dispose();
return newimg;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
多大的图啊?5000*5000是没问题的,如果不行就多开内存就是了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询