Не серовато-синий Java, но можно столкнуться с проблемами, где Вы записали что-то в файл, но он еще не был на самом деле записан - это могло бы быть в кэше где-нибудь, и читающий из того же файла может не на самом деле дать Вам новую информацию.
Короткая версия - сброс использования () или безотносительно соответствующего системного вызова должен гарантировать, что Ваши данные на самом деле записаны в файл.
Примечание я не говорю о дисковом кэше уровня ОС - если Ваши данные входят здесь, это должно появиться в чтении () после этой точки. Может случиться так, что сам язык записи кэшей, ожидая, пока буфер не заполняется или файл, сбрасывается/закрывается.
Перед тем, как jsbueno опубликовал свой ответ, я также пытался спросить на IRC-канале #gimp. Я был направлен на этот поток на Gimptalk , который содержит следующий код:
gimp -n -i -b - <<EOF
(let* ( (file's (cadr (file-glob "*.xcf" 1))) (filename "") (image 0) (layer 0) )
(while (pair? file's)
(set! image (car (gimp-file-load RUN-NONINTERACTIVE (car file's) (car file's))))
(set! layer (car (gimp-image-merge-visible-layers image CLIP-TO-IMAGE)))
(set! filename (string-append (substring (car file's) 0 (- (string-length (car file's)) 4)) ".png"))
(gimp-file-save RUN-NONINTERACTIVE image layer filename filename)
(gimp-image-delete image)
(set! file's (cdr file's))
)
(gimp-quit 0)
)
EOF
Этот скрипт обрабатывает файлы xcf, а затем для каждого файла загружает файл, объединяет видимые слои , сохраняет результат в формате PNG и «выгружает» изображение. Наконец, он выходит из GIMP. Глобальный подход используется, чтобы избежать запуска GIMP для каждого изображения. Это также обходит проблему получения параметров из оболочки в gimp.
Я публикую этот ответ на тот случай, если кому-то понадобится способ сделать это без использования GIMP-Python (возможно, потому что он не установлен).
Использовать xcftools
Возможно, что этот инструмент не был доступен (или в любом случае широко известен) в то время, когда этот вопрос был задан изначально, но команда терминала xcf2png
из пакета xcftools
делает именно то, что вы просите, и это очень хорошо. Я использую его для своих дипломных работ и буду моим выбором для этого вопроса.
Из документации:
Это набор быстрых инструментов командной строки для извлечения информации из собственного формата файлов Gimp XCF.
Эти инструменты предназначены для эффективного использования многоуровневых файлов XCF в качестве источников в системе сборки, использующей «make» и аналогичные инструменты для управления автоматической обработкой графики.
Эти инструменты работают независимо от движка Gimp и не требуют даже установки Gimp.
«xcf2png» преобразует файлы XCF в формат PNG, при необходимости выравнивая слои. Информация о прозрачности может быть сохранена в изображении, или цвет фона может быть указан в командной строке.
xcftools
, упомянутый в комментариях сразу после того, как решил опубликовать ответ об этом, но я все равно публикую, так как этот комментарий было легко скучаю (я видел это, потому что специально проверил это), и я думаю, что xcftools заслуживает правильного места для ответа, так как это действительно самый подходящий ответ на данный момент.)