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

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

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

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

【问题讨论】:

    标签: java filesize


    【解决方案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");
      

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-02-10
        • 2014-02-19
        • 1970-01-01
        • 1970-01-01
        • 2013-05-29
        • 1970-01-01
        相关资源
        最近更新 更多