Верхний и левый края изображения в формате JPEG всегда находятся на границе блока. Нижний и правый края могут быть, а могут и не быть.
Таким образом, у вас есть свободный выбор нижнего и правого краев обрезанного без потерь изображения, но верхний и левый края обрезанного изображения должны быть целым числом, кратным эффективному размеру блока исходного верхнего и левого краев.
Эффективный размер блока изображений JPEG различается. DCT работает с блоками 8x8, но некоторые JPEG-изображения содержат цветовую субдискретизацию -, что делает эффективный размер блока 8x16 или 16x16.
Эта ошибка была введена в v68.x и еще не исправлена, ожидая ее исправления, вот обходной путь, обратите внимание, что файлы tmp/ns*
необходимы для правильной работы TB v68.
Обходной путь I:
Как было предложено в комментариях, можно использовать пользовательский временный файл, затем вы можете применять различные ограничения к этой конкретной временной папке, также обратите внимание, что изменения переменных среды не должны применяться широко.
Отредактируйте файл .desktop
, используемый для запуска Thunderbird (, обычно под /usr/share/applications
), изменив строку Exec=
на следующую команду или запустите Thunderbird с данной командой:
export TMPDIR=/home/my/new/tmpdir; export TMP=$TMPDIR; thunderbird; rm -rf /home/my/new/tmpdir/ns*
Это установит переменные $TMPDIR
и $TMP
в пользовательское местоположение, затем запустится Thunderbird, и, наконец, когда он будет закрыт, rm -rf /home/my/new/tmpdir/ns*
удалит остатки tmp.
Обратите внимание, что env. изменения переменных повлияют только на Thunderbird, если он запускается из файла bash
или .desktop
. В противном случае, если эта команда запускается непосредственно с терминала, изменения на $TMP
повлияют на команды, запущенные после этой команды.
Обходной путь II:
Мы можем использовать скрипт для выполнения этой работы вручную, пока используется Thunderbird; Для этого мы отредактируем файл .desktop
со следующим:
Exec=env TMPDIR=/tmp /usr/bin/thunderbird & /path/to/watch-tb-script.sh
Где cat watch-tb-script.sh
будет:
#!/bin/sh
[[ $(ps all -e | grep thunderbird | grep -v color | grep -v grep) ]]
while [[ "$?" == 0 ]]
do
for i in /tmp/ns*; do
if [ -f "$i" ]; then
rm -rf $i;
sleep 10s;
fi;
done;
sleep 60s;
[[ $(ps all -e | grep thunderbird | grep -v color | grep -v grep) ]]
done;
Этот сценарий будет продолжать работать, пока открыт Thunderbird, проверять наличие /tmp/ns*
файлов и удалять каждый файл каждые 10 секунд, после чего сценарий приостанавливается на 60 секунд перед следующей проверкой.
Эта ошибка появилась в версии 68.x и еще не исправлена. После расследования вот точная ситуация:
Сведения об ошибке:
Thunderbird использует ~/tmp/ns*
с более ранней версии при отправке электронной почты, но он также удаляет эти временные файлы сразу после их использования, пока tb все еще открыт. В v68.x ошибка кодирования заставляет Thunderbird пытаться удалить эти временные файлы в местоположении /tmp/ns...
вместо ~/tmp/ns...
, поэтому установка переменной $TMPDIR
в /tmp
устраняет проблему. (ожидание обновления восходящего потока)
Решение:
Использование следующей команды для запуска Thunderbird решит проблему (, как и в другом ответе)
export TMPDIR=/tmp; thunderbird;