Questo messaggio indica che read.bmp prevede una certa profondità di byte, 4 byte per numero intero nel binario, con ogni intero che compone una parte del pixel, che è possibile vedere in questa sezione di codice. Lo script sta definendo e testando le dimensioni del file in base alla profondità del colore e alle definizioni dell'intestazione.
Se si guarda a questo codice, che è sotto il cofano della funzione:
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
I h$
campi sono tutte le impostazioni di intestazione definite che ha fissato la profondità di byte di 1L a 4 per vari dimensioni dell'immagine. Questa sezione sta verificando che il file arrivi come previsto. È 8, 24 o 32 bit perché ha superato il primo avviso sopra questa sezione. Si è interrotto perché c'è un problema con le dimensioni codificate del file.
Se il file è formattato correttamente e non danneggiato, con 3x8 canali, dovrebbe entrare correttamente. (O in bianco e nero con canali 1x8)
prova ad eseguire:
is.bmp('tiger.bmp')
per vedere se restituisce che si tratta di un file valida di Windows BMP.
puoi condividere in qualche modo il file bmp che stai utilizzando? –