Yes, it is possible to encrypt a BMP image with any stream cipher.
First of all, you need to cut the first 54-byte of the BMP image into another file. At this point, the data part begins. Then the rest can be encrypted with any stream cipher. After that prepend the header to the encrypted file.
Here the example with OpenSSL. I will use AES with CTR mode where CTR mode turns any block cipher into a stream cipher.
#original file is tux.bmp
head -c 54 tux.bmp > tux_head.part
tail -c +55 tux.bmp > tux_data.part
openssl enc -aes-128-ctr -e -in tux_data.part -out aes-ctr-enc-data.part -K "01234567890123450123456789012345" -iv "00000000000000010000000000000001"
cp tux_head.part encrypted_tux.bmp
cat aes-ctr-enc-data.part >> encrypted_tux.bmp
I've used AES-CTR since OpenSSL has ChaCha20-Poly1305 as a cipher suite that is an authenticated encryption. It will add tag, so it is not useful here.
The input image
The output image