在 Java 中比较图像大小 (KB)

Posted

技术标签:

【中文标题】在 Java 中比较图像大小 (KB)【英文标题】:Compare Image Size in KB in Java 【发布时间】:2018-04-17 06:06:25 【问题描述】:

我正在使用一个 api,它可以为我提供图像的大小,例如 200KB(也可以是 MB)。现在我需要对低于特定尺寸的图像执行一些操作。我想要实现的是这样的:

String imgSize = img.getSize();
if(imgSize < 250KB) 
  // Do Something

我不能在这里使用关系运算符。实现这一目标的最佳方法是什么?

【问题讨论】:

【参考方案1】:

除了上一个答案,你还可以做这样的事情。将大小转换为以字节为单位的大小,然后使用Integer.parseInt(String s) 获取您可以检查的int 值。

String bytes = size.replace("KB", "000").replace("MB", "000000");

if (Integer.parseInt(bytes) <= 250000) 
    //Do something.

如果您正在处理小数,这可以工作。

Map<String, Integer> conversions = new HashMap<String, Integer>();
conversions.put("KB", 1000);
conversions.put("MB", 1000000);

//Get numbers from String.
double doubleSize = Double.parseDouble(size.replaceAll("[A-Z]+$", "")); 
//Get units from String.
String units = size.replaceAll("[0-9.]", "");  

double bytes = doubleSize * conversions.get(units);

if (bytes <= 250000) 
    //Do something.

【讨论】:

@Riaan,如果我得到 90.52KB 大小的图像,该方案是否有效。那么它将是 90.52000。谢谢 @VivekDhiman - 不,如果你有小数,你将不得不使用另一种方法。 @VivekDhiman - 当然。这与其他答案的建议类似。【参考方案2】:

确定imgSize 的单位是 KB 还是 MB。如果以 MB 为单位,则将其转换为 KB 并使用它。

String imgSize = "";
int imgSizeKB = 0;

switch (imgSize.toUpperCase()) 
    case "KB":
        imgSizeKB = (Integer.parseInt(imgSize.split("KB")[0]));
        break;
    case "MB":
        imgSizeKB = (Integer.parseInt(imgSize.split("MB")[0]) * 1024);
        break;


if(imgSizeKB < 250)
    // Do Something

现在您可以使用if 语句,因为imgSizeKBint

【讨论】:

【参考方案3】:

检查:

imgSize.endsWith("KB");

用正则表达式提取数字并相应地相乘。

【讨论】:

以上是关于在 Java 中比较图像大小 (KB)的主要内容,如果未能解决你的问题,请参考以下文章

如何查看java一个类的大小

如何查看java一个类的大小

Java中JDialog如何调整大小,要可行

Java 图标图像最大文件大小

c 使用 fstat 问题比较文件大小

L1-010. 比较大小