为了账号安全,请及时绑定邮箱和手机立即绑定

二进制数据图像转换不等于同一图像的jpg

二进制数据图像转换不等于同一图像的jpg

MMTTMM 2021-06-13 17:08:28
我正在尝试将位于 MP3 文件中的嵌入图像与保存为 JPG 的完全相同的图像进行比较。如果图像相同,那么我想执行一些进一步的处理,但是,当我比较 2 个图像(RGB 比较)时,我总是出错。我确信这些图像是相同的,因为我从同一个 MP3 中提取了图像,以使用以下代码最初创建 JPG。Artwork aw = tag.getFirstArtwork();ByteArrayInputStream bis = new ByteArrayInputStream(aw.getBinaryData());BufferedImage imgA = ImageIO.read(bis);File outputfile = new File("expectedImage.jpg");ImageIO.write(imgA, "jpg", outputfile);在我运行它以获取图像后,我刚刚注释掉了该部分,现在我有了以下代码来比较 MP3 嵌入图像和 JPG提取MP3图片并调用比较方法try {    Artwork aw = tag.getFirstArtwork();    ByteArrayInputStream bis = new ByteArrayInputStream(aw.getBinaryData());    BufferedImage imgA = ImageIO.read(bis);    File expectedImageFile = new File("expectedImage.jpg");    BufferedImage imgB = ImageIO.read(expectedImageFile);    if(compareImages(imgA, imgB)) {        System.out.println("The Images Match.");    }else {        System.out.println("The Images Do Not Match.");    }} catch (IOException e) {    e.printStackTrace();}比较图像在第一次通过循环时比较像素的相等性时,该方法失败。public static boolean compareImages(BufferedImage imgA, BufferedImage imgB) {    // The images must be the same size.    if (imgA.getWidth() != imgB.getWidth() || imgA.getHeight() != imgB.getHeight()) {        return false;    }    int width = imgA.getWidth();    int height = imgA.getHeight();    // Loop over every pixel.    for (int y = 0; y < height; y++) {        for (int x = 0; x < width; x++) {            // Compare the pixels for equality.            if (imgA.getRGB(x, y) != imgB.getRGB(x, y)) {                return false;            }        }    }    return true;} 
查看完整描述

2 回答

  • 2 回答
  • 0 关注
  • 158 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信