Файл занимает только 23 МБ в формате JPEG. Однако формат JPEG является сжатым, и любая программа (например, FireFox), которая хочет фактически визуализировать изображение, должна распаковывать его и сохранять каждый пиксель в памяти. У вас есть 13k на 20k пикселей, что составляет 260 миллионов пикселей. Нарисуйте минимум 3 байта цветовой информации на пиксель, это 780 МБ. Может потребоваться 4 байта для выравнивания каждого пикселя по границе слова, что составляет 1040 МБ.
Что касается того, как это исправить, ну, я не знаю, можете ли вы, за исключением уменьшения размера изображения. Если изображение содержит только небольшое количество цветов (например, простая диаграмма, нарисованная несколькими основными цветами), вы можете сохранить его в каком-то формате, использующем индексированные цвета, и тогда FireFox может быть в состоянии сделать это, используя меньше памяти на пиксель. Все зависит от кода рендеринга.
В зависимости от того, что вы делаете, возможно, вы могли бы настроить все так, чтобы все изображение было с более низким разрешением, а затем, когда пользователь увеличит изображение, оно получит изображение с более высоким разрешением, которое охватывает меньшую площадь.
Редактировать: прояснить этот последний бит: сейчас у вас есть вся фотография в полном разрешении, которая проста, но требует много памяти. Альтернативой будет иметь всю фотографию с уменьшенным разрешением (максимальное ожидаемое разрешение экрана), что займет меньше памяти; затем, когда пользователь увеличивает масштаб изображения, вы получаете изображение с полным разрешением, но не все изображение - только ту часть, которая была увеличена (для которой также требуется меньше памяти).
Я могу придумать два подхода: разбить большое изображение на «плитки» и загрузить те, которые вам нужны (не уверен, насколько хорошо это будет работать), или использовать что-то вроде ImageMagick для создания меньшего изображения на лету , Возможно, вы захотите использовать кэширование, если вы делаете это таким образом, и вам может понадобиться написать небольшое сообщение «Пожалуйста, подождите», которое будет отображаться во время его создания, поскольку обработка такого большого изображения может занять несколько секунд.