我正在创建一个太空入侵者的游戏,我希望所有的图像都能与屏幕分辨率成比例。这意味着它可以在所有屏幕尺寸上使用,并且所有图像都会缩小或变大,以便它们适合屏幕。游戏是全屏。什么是最简单的方法来做到这一点?此外,这是设置一切大小的最佳方式吗?如何更改图像的大小?
3
A
回答
1
设G是你的Graphics2D对象的实例,theImage是要绘制的图像,并xFactor和yFactor是缩放因子x和y,尝试:
AffineTransformation scaleTransformation = AffineTransformation.getScaleInstance(xFactor, yFactor);
g.draw(theImage, scaleTransformation, null);
4
有你有看Image#getScaledInstance()虽然它有它的短挫折(The Perils of Image.getScaledInstance())的问题是:
Image.getScaledInstance()不返回完成,缩放后的图像。当使用图像像素 时,它会在稍后的时间留下大部分缩放工作。
由于这些挫折,你可能想用不同的方式来调整图片的大小,你可以尝试这样的事:
import javax.swing.ImageIcon;
import java.awt.image.BufferedImage;
import java.awt.Image;
import java.awt.Color;
import java.awt.Graphics2D;
import java.io.File;
import javax.imageio.ImageIO;
import java.awt.RenderingHints;
public class ImgUtils {
public BufferedImage scaleImage(int WIDTH, int HEIGHT, String filename) {
BufferedImage bi = null;
try {
ImageIcon ii = new ImageIcon(filename);//path to image
bi = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_INT_RGB);
Graphics2D g2d = (Graphics2D) bi.createGraphics();
g2d.addRenderingHints(new RenderingHints(RenderingHints.KEY_RENDERING,RenderingHints.VALUE_RENDER_QUALITY));
g2d.drawImage(ii.getImage(), 0, 0, WIDTH, HEIGHT, null);
} catch (Exception e) {
e.printStackTrace();
return null;
}
return bi;
}
}
你会使用它像:
BufferedImage img=new ImgUtils().scaleImage(50,50,"c:/test.jpg");
//now you have a scaled image in img
参考:
+1
对,JAI我个人讨厌。有这么多的调整,几乎总是你必须妥协的一件事或其他。我不知道为什么Java中没有象样的图像处理器可以与imageMagick相提并论。 – Nishant
+0
@Nishant +1是的,我必须说这是一种失望 –
1
Image getScaledImage(Image Img, int wt, int ht) {
BufferedImage resizedImg = new BufferedImage(wt, ht, BufferedImage.TYPE_INT_ARGB);
Graphics2D g2 = resizedImg.createGraphics();
g2.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);
g2.drawImage(Img, 0, 0, wt, ht, null);
g2.dispose();
return resizedImg;
}
相关问题
- 1. 如何更改图像的大小
- 2. 如何更改图像的大小?
- 3. 如何更改qrencode.encode的图像大小?
- 4. 如何防止更改图像大小?
- 5. 如何更改drawableTop图像大小
- 6. 如何更改UIBarButtonItem图像大小
- 7. Bootstrap图像更改大小
- 8. SSCollectionViewItem更改图像大小
- 9. 更改CSS图像大小
- 10. 更改图像时更改ImageView大小
- 11. 如何根据屏幕大小更改图像大小?
- 12. 如何根据窗口大小更改图像大小
- 13. r:dprint:表格更改的图像大小
- 14. PHP的Excel图像更改大小
- 15. UIView更改图像的大小?
- 16. Android,更改ImageView中的图像大小
- 17. 更改表格中图像的大小
- 18. Jquerymobile UI:如何更改列表视图中的图像大小
- 19. 如何将图像更改为图片框的大小?
- 20. 更改任何一个后图像的图像大小
- 21. 如何更改gnuplot的图形大小
- 22. 如何更改地图的大小ggplot
- 23. 如何更改图形的大小
- 24. 如何更改SVGFIG图的大小
- 25. 如何更改raphael图标的大小?
- 26. 如何更改xgboost.plot_importance中图的大小?
- 27. 在不更改图像大小的情况下更改img容器的大小?
- 28. 如何更改列表视图的现有图像列表的图像大小
- 29. 如何更改LibGdx的CheckBox图像的大小?
- 30. 如何根据图像更改我的文章的大小?
如何显示图像? – Baz
也许JAI API?恩,好主意可能是。 – Nishant
你应该告诉我们你试过的东西。而且,你的意思是缩放。这会降低图像的质量,因为像素被复制以创建之前没有的新信息。最佳方法是使用固定分辨率(即更改屏幕分辨率来解析游戏的分辨率)。这就是所有游戏所做的。 – m0skit0