Как к представлению EXTREMELY большие изображения?

У меня есть изображение TIF на 1.8 ГБ, что я пытаюсь открыть на своей машине с Ubuntu 18.04.1 LTS. У меня есть 8 ГБ RAM и 2 ГБ области подкачки. Однако я не могу открыться, изображение на Программе просмотра изображений Gnome запаса (говорит, что "Размеры изображения в формате TIFF, слишком большого"), или Shotwell (говорит "фото то, чтобы избегать исходного файла: [путь к файлу]"), или Калека (ошибки), или в моем Windows 7 VM с 4 ГБ RAM (говорит, что слишком мало RAM даже при том, что это имело свободных более чем 2.5 ГБ), или feh, который ведет себя как это:

$ feh DO_NOT_OPEN.tif
TIFFFetchNormalTag: Warning, Incompatible type for "RichTIFFIPTC"; tag ignored.
feh WARNING: DO_NOT_OPEN.tif - No Imlib2 loader for that file format
feh: No loadable images specified.
See 'man feh' for detailed usage information

Там какой-либо путь состоит в том, чтобы открыть это изображение на Ubuntu?

(Для любопытного изображение - этот. Я назвал его как этот, потому что в первый раз я пытался открыть его, разрушил мой компьютер ¯ _ (ツ)_/¯)

7
задан 28 April 2019 в 01:15

2 ответа

Почему я не могу открыть изображение ни в каком средстве просмотра?

Проблемой является, вероятно, RAM и/или ЦП.

Изображение в формате TIFF сжато до LZW. Когда приложение хочет отобразить его, это должно распаковать изображение сначала. И это - то, где RAM и ЦП играют роль. Кроме того, в зависимости от приложения, могут быть буферы, этому также нужна RAM.

Я сделал некоторые (ненаучные) эксперименты и заметил различия между приложениями в трех фазах: при загрузке изображения, после загрузки изображения, при увеличивании масштаб.

Shotwell взял до 5 ГБ RAM при открытии файла и затем опустился до 2 ГБ. Когда я увеличил масштаб, это подошло к 7 ГБ.

Калека подошел к 5 ГБ и остался там при просмотре изображения и увеличивания масштаб. Использование оперативной памяти, постепенно увеличиваемое при редактировании изображения.

GwenView подошел к 3.8 ГБ при загрузке и опустился до 2 ГБ впоследствии. При увеличивании масштаб это подошло к 2.7 ГБ.

Ваш лучший выбор пробует GwenView (программа просмотра изображений по умолчанию в Kubuntu, но может быть установлен в запасе Ubuntu также).

Какие опции я имею, если изображение является слишком большим для RAM?

В целом, если изображение является слишком большим для вписывания в RAM, можно разделить его использование convert который является частью imagemagick пакет.

Необходимо увеличить пределы по умолчанию, которые определяются в /etc/ImageMagick-6/policy.xml (номер 6 может измениться в будущих версиях). Необходимо скорректировать максимальный размер в пикселях, которые определяются в следующих строках:

<policy domain="resource" name="width" value="16KP"/>
<policy domain="resource" name="height" value="16KP"/>

KP означает KiloPixels, т.е. тысяча пикселей. В Вашем случае изображение имеет 40000x12788 пикселей, таким образом, только необходимо изменить ширину на что-то большее, чем 40 килопондов, например, 41 килопонд.

Кроме того, необходимо увеличить максимальное дисковое пространство:

<policy domain="resource" name="disk" value="1GiB"/>

к чему-то разумному как 10 ГиБ.

Чтобы разделить изображение на 5x3 части и произвести один файл на часть, используйте следующую команду:

convert -crop 5x3@ inputfile.tif outputfile%0d.tif

Для получения дополнительной информации о convert, посмотрите, что человек преобразовывает или смотрит на документацию.


Возможно, немного вне темы, но вот сценарий удара quick&dirty, который размещает изображение рядом и создает страницу HTML, которая отображает обзор, где можно нажать на мозаику для открытия его в полном разрешении. Сохраните его как, например. tile_image.sh и вызовите его как ./tile_image.sh originalImage tilesX tilesY, где tilesX является количеством мозаик горизонтально, и tilesY является количеством мозаик вертикально.

#!/bin/bash
INPUT_FILE=$1
TILES_X=$2
TILES_Y=$3
OUTPUT_FILE=${INPUT_FILE%.*}_tile_%0d.png
convert -crop $TILES_X"x"$TILES_Y\@ $INPUT_FILE $OUTPUT_FILE
HTML_FILE=${INPUT_FILE%.*}_tile_view.html
echo "<html><body><style type="text/css">table,tr,td,a {padding:0;border-spacing:0} img:hover {opacity:.9}</style><table>" > $HTML_FILE
X=0
Y=0
while [ $Y -lt $TILES_Y ]; do
    echo "<tr>" >> $HTML_FILE
    while [ $X -lt $TILES_X ]; do
        TILE_NUMBER=$(echo $Y*$TILES_X+$X | bc -l)
        TILE_NAME=${INPUT_FILE%.*}_tile_$TILE_NUMBER.png
        THUMBNAIL=${INPUT_FILE%.*}_tile_$TILE_NUMBER"_thumb.png"
        convert -resize 100x100 $TILE_NAME $THUMBNAIL
        echo "<td><a href=\""$(basename $TILE_NAME)"\"><img src=\""$(basename $THUMBNAIL)"\"></a></td>" >> $HTML_FILE
        let X=X+1
    done
    let X=0
    echo "</tr>" >> $HTML_FILE
    let Y=Y+1
done
echo "</table></body></html>" >> $HTML_FILE
3
ответ дан 23 November 2019 в 06:43

Тест

Я протестировал для просмотра файла TIFF на 1,7 гибибайта в Dell Precision M4800 с 16 гибибайтами RAM и Ubuntu 18.04.1 LTS с Уэйлендом. Я протестировал с gimp также в Dell Latitude E7240 с 8 гибибайтами RAM и 18.04.1 персистентных живых LTS с Xorg.

Общее Использование оперативной памяти включая операционную систему измеряется с free -m.

  • gimp - работы лучше всего для меня также в полном разрешении (незамедлительно), 6 143 мебибайт RAM. Это работает хорошо и с 16 гибибайтами RAM и с 8 гибибайтами RAM.

  • shotwell - работы также над полным разрешением (незамедлительно), 7 920 мебибайт RAM (после некоторой горизонтальной и вертикальной прокрутки в полном разрешении)

  • gpicview - работы, но медленнее (не удался показать полное разрешение непосредственно, но работы при постепенном увеличивании масштаб к полному разрешению, общему Использованию оперативной памяти при показе и изменении масштаба 3 016 мебибайт RAM, но 4 219 мебибайт RAM во время загрузки.

  • feh - не работает 'Загрузчик № ImLib2 на тот формат файла'

  • eog - не работает 'слишком большое изображение'
  • ristretto - не работает (тихо, показывает миниатюру, но никакое изображение),

Заключение

Это должно работать с Ubuntu и 8 гибибайт RAM для просмотра этого изображения с несколькими средствами просмотра и редактора gimp работы действительно хорошо для меня. С 6 гибибайтами RAM необходимо выбрать легкое средство просмотра, и с 4 гибибайтами, вероятно, быть готовыми ожидать некоторого свопинга.

Заметьте, что я измерил общее использование RAM (включая операционную систему).

Заключительный комментарий

Это - замечательное изображение, которое определенно стоит масштабировать в с инструментами, которые Вы имеете в наличии. Я должен добавить, что инструмент масштабирования веб-сайта работает хорошо с Firefox для меня в компьютере с 4 ГБ RAM, я мог достигнуть уровня масштабирования, соответствующего полному разрешению файла TIFF на 1,7 ГБ, и я мог прокрутить горизонтально и вертикально видеть целое изображение.

2
ответ дан 23 November 2019 в 06:43

Другие вопросы по тегам:

Похожие вопросы: