【问题标题】:Convert high-resolution images to low-resolution将高分辨率图像转换为低分辨率
【发布时间】:2009-11-26 02:00:49
【问题描述】:

我正在做一个关于媒体管理器的网络项目。我上传了高分辨率图片,需要将这些图片转换为低分辨率,以便将生成的图片压缩成更小的尺寸。使用 Java 怎么可能?

如果可能,请发布源代码。

谢谢, 纳文

【问题讨论】:

  • 图像压缩或图像调整/重采样?
  • 但是这个问题被标记为“数据压缩”,所以不清楚它是否严格处理重采样。

标签: java image data-compression


【解决方案1】:

不确定我是否正确,但如果你想改变图像的大小,Image 类有一个 getScaledInstance 方法:

Image theImage = ...
Image scaled = theImage.getScaledInstance(32, -1, Image.SCALE_FAST);

详情见图片documentation

【讨论】:

  • naveen 可能还需要将图像读/写为 JPG 或 PNG。
  • 其中,顺便说一句,可以用 IamgeIO 完成:java.sun.com/javase/6/docs/api/javax/imageio/ImageIO.html
  • 根据您的要求,使用 Image.SMOOTH 可能比使用 Image.SCALE_FAST 更好。否则,很好的电话。
  • 这只是一个例子......对于 32 像素的大小也是如此......在不了解所有细节的情况下有点困难。
【解决方案2】:

我看到JAI 用于此目的。

【讨论】:

  • Dan 建议的 JAI 可能是您最好的选择,如果它可行的话,JAI 并不总是可用,并且根据您的部署要求/运行时限制,您可能无法依赖它。
【解决方案3】:

如果您不需要对高分辨率图像执行任何操作,例如,您可以在图像阅读器上添加一个参数。

ImageReadParam param = reader.getDefaultReadParam();
param.setSourceSubsampling(4, 4, 0, 0);
img = reader.read(0);

这将跳过源数据中 4 行/列中的 3 行。

【讨论】:

    【解决方案4】:

    如果您在安装了imagemagick 二进制文件的Linux 服务器上运行,您可以在@987654323@ 上执行@987654322@。只需确保您读取/写入唯一名称(您可以使用 @987654324@ 来确保这一点)。

    【讨论】:

      猜你喜欢
      • 2014-11-20
      • 2011-04-07
      • 1970-01-01
      • 1970-01-01
      • 2017-08-23
      • 1970-01-01
      • 2011-09-30
      • 1970-01-01
      • 2017-07-01
      相关资源
      最近更新 更多