我正在尝试使用read.bmp
包中的bmp
函数读取R中的BMP文件。但是,我收到以下错误:
read.bmp(“tiger.bmp”)出错:图像中预测字节数与实际字节数不匹配
我不知道如何才能解决此错误。任何和所有帮助都非常感谢。
答案 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文件。