read.bmp()文件中预测字节数与实际字节数之间不匹配

时间:2016-07-05 18:18:51

标签: r

我正在尝试使用read.bmp包中的bmp函数读取R中的BMP文件。但是,我收到以下错误:

  

read.bmp(“tiger.bmp”)出错:图像中预测字节数与实际字节数不匹配

我不知道如何才能解决此错误。任何和所有帮助都非常感谢。

1 个答案:

答案 0 :(得分:3)

该消息意味着read.bmp期望某个字节深度,二进制中每个整数4个字节,每个整数组成像素的一部分,您可以在此部分代码中看到。该脚本根据颜色位深度和标题定义定义和测试文件的尺寸。

如果你看一下这个函数的代码:

  bytes_pixel=h$depth / 8
  row_width_bytes=h$width * bytes_pixel
  # bmp rows are written to lenth of nearest 4 bytes
  rounded_row_width_bytes = ceiling(row_width_bytes/4)*4
  bytes_to_trim = row_width_bytes %% 4
  bytes_to_read=rounded_row_width_bytes * h$height
  if(h$bmp_bytesz==0) {
    if(Verbose) warning("invalid byte size information for image")
  }
  else if(h$bmp_bytesz != bytes_to_read)
    stop("mismatch between predicted and actual number of bytes in image")

h$bmp_bytesz=4

h$字段都是定义的标题设置,它们为图像的各个维度设置1L的字节深度为4。本节将检查文件是否按预期进入。它是8位,24位或32位,因为它超过了本节上面的第一个警告。它已停止,因为文件的编码尺寸存在问题。

如果文件格式正确且未损坏,使用3x8频道,则应正确进入。 (或带有1x8通道的黑白)

尝试跑步:

is.bmp('tiger.bmp')查看是否返回它是一个可行的Windows BMP文件。