Alexandroppolus, Все равно объект получать через FileReader
Ок, есть вариант передать файл напрямую из файл листа.
Скажи, а почему ты считаешь, что URL.createObjectURL - лучше?
Меня например смутила секция "Memory management"
Владимир, base64 - это бессмысленная увеличенная копия файла. Если файл N байт, то для base64 придется аллоцировать 8N/3 байт оперативы (строка длиной 4N/3, по два байта на символ). А для показа картинки браузеру потом придется обратно декодировать эту строку. "Бонус" - ещё и асинхронная возня с ФайлРидером.
createObjectURL синхронно создаёт короткую ссылку прямо на файл на диске (никаких копий, потому и синхронно). Во время показа картинки этот файл напрямую зачитывается и отрисовывается. Просто надо не забывать URL.revokeObjectURL, но это мелочь.