【问题标题】:How to make a BufferedImage work with this image? (java)如何使 BufferedImage 与此图像一起使用? (爪哇)
【发布时间】:2012-09-09 14:22:41
【问题描述】:

我有这张照片:

把它想象成一个 4x4 的瓦片世界,每个瓦片都是 32x32 像素。

然后看图:

看看石砖,它的边缘在网格之外。我可以为此使用bufferedImage,还是需要做其他事情才能完成这项工作?

如果是这样,你能帮我解释一下吗,因为我不知道如何实现这是我的游戏?

另一个示例图片:

让我更清楚地解释一下...第一张图片 = 网格,第二张图片 = 瓷砖重叠网格...(这就是我想要的,因为它是一个新的瓷砖,我可以用它来让我的游戏看起来更好!), 3d Image = 一个如何平铺的例子!

【问题讨论】:

    标签: java swing awt bufferedimage


    【解决方案1】:

    要彻底消除边界伪影,可以使用Penrose tiles

    您可以使用anti-aliasing 缓解边缘伪影。这个example 使用TexturePaint,每种颜色有三种不同的色调:原始、深色和浅色。您可以尝试更多的色调以获得更好的效果。

    【讨论】:

      【解决方案2】:

      只需使用PhotoShop 将图像编辑为 32x32 像素大小......然后在您的游戏中使用它......

      /////////////////////////////////////////////////////////p>

      here 所示,AffineTransformOp 提供了选择插值类型的额外灵活性。

      BufferedImage before = getBufferedImage(encoded);
      int w = before.getWidth();
      int h = before.getHeight();
      BufferedImage after = new BufferedImage(w, h, BufferedImage.TYPE_INT_ARGB);
      AffineTransform at = new AffineTransform();
      at.scale(2.0, 2.0);
      AffineTransformOp scaleOp = 
         new AffineTransformOp(at, AffineTransformOp.TYPE_BILINEAR);
      after = scaleOp.filter(before, after);
      

      【讨论】:

      • 我的意思是,我想将该图像用于多个不同的图块...我应该如何编码...
      • 但是所有的瓷砖都将具有相同的大小......对......??很好...我给你一个代码来缩放缓冲图像..试试看..
      • 天哪,这很难解释......看:我希望它越过边缘创建一个新瓷砖,这样它们会更好地平铺并且减少纹理工作......做你明白我的意思吗?
      • @ 很好.. 如果所有 32x32 瓷砖具有相同或不同的图像......只需使用 PhotoShop 或您选择的任何编辑器制作该尺寸......然后使用它...... . 它的问题是什么..... 上面的代码以编程方式做到这一点.... 现在由您来决定... 选择哪一个
      • 哇...让我再次解释一下...第一个图像 = 网格,第二个图像 = 重叠网格的瓷砖...(这就是我想要的,因为它是一个新的瓷砖,我可以用来让我的游戏看起来更好!),3d 图片 = 一个如何平铺的例子!
      猜你喜欢
      • 2016-11-07
      • 1970-01-01
      • 2020-08-28
      • 2013-09-17
      • 2012-12-26
      • 2023-03-16
      • 2017-02-05
      • 2011-09-19
      • 1970-01-01
      相关资源
      最近更新 更多