Мне нужен способ легко записать сжатый файл TIFF из строки в python. Я уже смотрю библиотеку изображений Python PIL, но мне нужно написать очень специфический формат TIFF и На данный момент PIL поддерживает только несжатые файлы. Мне нужно написать сжатый LZW полосатый TIFF с одной простой строкой текста. Я бы предпочел не писать что-то с нуля, но если придется, то сделаю.
Записать файл TIFF в python из строки
comment
В итоге я просто использовал код .NET, который у меня был, который сделал это, и экспортировал его в исполняемый файл командной строки, а затем вызвал его вместо tiffCP, в основном то же самое, но у меня уже были все настройки, установленные в моем инструменте .NET, поэтому я не нужно было беспокоиться ни о чем из python, просто передайте ему строку.
- person keepitreall89   schedule 18.03.2011
Ответы (2)
Я использовал этот код в прошлом, поэтому могу сказать, что он работает. Этот скрипт создан в 1997, и PIL пока не реализовал запись в формате TIFF со сжатием.
#
# use "tiffcp" to write compressed TIFF files.
#
# fredrik lundh (may 13, 1997)
#
import os, tempfile
# install standard driver
import Image, TiffImagePlugin
LZW = "lzw"
ZIP = "zip"
JPEG = "jpeg"
PACKBITS = "packbits"
G3 = "g3"
G4 = "g4"
def _save(im, fp, filename):
# check compression mode
try:
compression = im.encoderinfo["compression"]
except KeyError:
# use standard driver
TiffImagePlugin._save(im, fp, filename)
else:
# compress via temporary file
if compression not in (LZW, ZIP, JPEG, PACKBITS, G3, G4):
raise IOError, "unknown compression mode"
file = tempfile.mktemp()
im.save(file, "TIFF")
os.system("tiffcp -c %s %s %s" % (compression, file, filename))
try: os.unlink(file)
except: pass
Image.register_save(TiffImagePlugin.TiffImageFile.format, _save)
if __name__ == "__main__":
# test
im = Image.open("/usr/iv/tip/images/lenna.ppm")
im = im.point(lambda v: v >= 128 and 255, "1")
im.save("lenna.tif", compression=G4)
Этот код (afaict) просто добавляет возможность писать сжатые файлы TIFF с использованием стандартной библиотеки PIL, поэтому, если вы записали свой текст в объект PIL Image
, реализовать его должно быть очень просто.
person
Blender
schedule
10.03.2011
Хороший трюк, хотя обратите внимание, что для этого требуется инструмент командной строки, который может быть не установлен, особенно в Windows. Вы можете получить версию tiffcp для Windows здесь: verypdf.com/tif2pdf/image2pdf_emf2pdf_cmd.zip
- person kindall; 10.03.2011
Когда вы используете Linux, вы просто забываете обо всех этих вещах. Спасибо что подметил это.
- person Blender; 10.03.2011
Я только что использовал WinPython для записи файла TIFF со сжатием LZW:
from PIL import Image, TiffImagePlugin
[...]
TiffImagePlugin.WRITE_LIBTIFF = True
im.save(filename, compression = "tiff_lzw")
TiffImagePlugin.WRITE_LIBTIFF = False
(См. этот билет WinPython).
(Правка 2014-05-13: исправлена путаница с READ_LIBTIFF/WRITE_LIBTIFF).
(Изменить 23 февраля 2015 г.: обновлена ссылка на WinPython).
person
Robert Pollak
schedule
12.05.2014