blockchain bloat is a serious concern.
Block weight is limited, so even if someone tried to encode a LOT of data:
- It would need to be split somehow across multiple transactions and multiple blocks
- It wouldn't increase the size of the blockchain more than about 4 MB every 10 minutes.
This would have been a bigger concern back when it was relatively easy to get transactions confirmed with ZERO transaction fee since any attempt to store a few megabytes could have displaced up to an hour of valid transactions.
However, it really isn't very cost effective to use the blockchain as storage anymore now that there is enough demand to keep transaction fees alive. If someone wanted to store a 1 MB image in the blockchain, at 1 satoshi per byte, that's 0.00000001 BTC X 1,000,000 bytes = 0.01 BTC to store a single 1 megabyte image. At the current exchange rate that's approximately $320 to store that one image. For that same $320 you could store 500,000,000 of those images (500 TB) in AWS Standard S3 storage, well replicated and easily accessible with 99.999999999% (eleven 9's) of durability, for 13 months (or 13 of those images for 500,000,000 months?).
Meanwhile, there are enough people wanting their transactions confirmed, that they'd happily increase the fee on their transactions to 2 satoshis per byte. This means that if you want your image quickly and reliably stored, you'd have to increase your fee to AT LEAST 3 satoshis per byte (TRIPLING YOUR COST!). Still you may find plenty of users willing to spend 4 satoshis per byte to send a simple 250 byte transaction (after all, it's only going to cost them about $0.32 to send thousands or millions of dollars worth of bitcoin). Now you're starting to look at over $1,600 to store a single 1 megabyte image, and depending on transaction demand, the cost can go up quite a bit from there.