mirror of
https://github.com/python-pillow/Pillow.git
synced 2024-12-25 17:36:18 +03:00
TGA: Read and write LA data
This commit is contained in:
parent
956432ecdf
commit
39fae6e077
BIN
Tests/images/la.tga
Normal file
BIN
Tests/images/la.tga
Normal file
Binary file not shown.
|
@ -41,9 +41,6 @@ class TestFileTga(PillowTestCase):
|
||||||
test_im = Image.open(test_file)
|
test_im = Image.open(test_file)
|
||||||
self.assertEqual(test_im.size, (100, 100))
|
self.assertEqual(test_im.size, (100, 100))
|
||||||
|
|
||||||
# Unsupported mode save
|
|
||||||
self.assertRaises(IOError, lambda: im.convert("LA").save(test_file))
|
|
||||||
|
|
||||||
def test_save_rle(self):
|
def test_save_rle(self):
|
||||||
test_file = "Tests/images/rgb32rle.tga"
|
test_file = "Tests/images/rgb32rle.tga"
|
||||||
im = Image.open(test_file)
|
im = Image.open(test_file)
|
||||||
|
@ -60,8 +57,25 @@ class TestFileTga(PillowTestCase):
|
||||||
test_im = Image.open(test_file)
|
test_im = Image.open(test_file)
|
||||||
self.assertEqual(test_im.size, (199, 199))
|
self.assertEqual(test_im.size, (199, 199))
|
||||||
|
|
||||||
# Unsupported mode save
|
def test_save_l_transparency(self):
|
||||||
self.assertRaises(IOError, lambda: im.convert("LA").save(test_file))
|
# There are 559 transparent pixels in la.tga.
|
||||||
|
num_transparent = 559
|
||||||
|
|
||||||
|
in_file = "Tests/images/la.tga"
|
||||||
|
im = Image.open(in_file)
|
||||||
|
self.assertEqual(im.mode, "LA")
|
||||||
|
self.assertEqual(
|
||||||
|
im.getchannel("A").getcolors()[0][0], num_transparent)
|
||||||
|
|
||||||
|
test_file = self.tempfile("temp.tga")
|
||||||
|
im.save(test_file)
|
||||||
|
|
||||||
|
test_im = Image.open(test_file)
|
||||||
|
self.assertEqual(test_im.mode, "LA")
|
||||||
|
self.assertEqual(
|
||||||
|
test_im.getchannel("A").getcolors()[0][0], num_transparent)
|
||||||
|
|
||||||
|
self.assert_image_equal(im, test_im)
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
|
|
|
@ -558,6 +558,13 @@ For more information about the SPIDER image processing package, see the
|
||||||
.. _SPIDER homepage: https://spider.wadsworth.org/spider_doc/spider/docs/spider.html
|
.. _SPIDER homepage: https://spider.wadsworth.org/spider_doc/spider/docs/spider.html
|
||||||
.. _Wadsworth Center: https://www.wadsworth.org/
|
.. _Wadsworth Center: https://www.wadsworth.org/
|
||||||
|
|
||||||
|
TGA
|
||||||
|
^^^
|
||||||
|
|
||||||
|
PIL reads and writes TGA images containing ``L``, ``LA``, ``P``,
|
||||||
|
``RGB``, and ``RGBA`` data. PIL can read both uncompressed and
|
||||||
|
run-length encoded TGAs, but writes only uncompressed data.
|
||||||
|
|
||||||
TIFF
|
TIFF
|
||||||
^^^^
|
^^^^
|
||||||
|
|
||||||
|
@ -927,11 +934,6 @@ PSD
|
||||||
PIL identifies and reads PSD files written by Adobe Photoshop 2.5 and 3.0.
|
PIL identifies and reads PSD files written by Adobe Photoshop 2.5 and 3.0.
|
||||||
|
|
||||||
|
|
||||||
TGA
|
|
||||||
^^^
|
|
||||||
|
|
||||||
PIL reads 24- and 32-bit uncompressed and run-length encoded TGA files.
|
|
||||||
|
|
||||||
WAL
|
WAL
|
||||||
^^^
|
^^^
|
||||||
|
|
||||||
|
|
|
@ -33,6 +33,7 @@ MODES = {
|
||||||
(1, 8): "P",
|
(1, 8): "P",
|
||||||
(3, 1): "1",
|
(3, 1): "1",
|
||||||
(3, 8): "L",
|
(3, 8): "L",
|
||||||
|
(3, 16): "LA",
|
||||||
(2, 16): "BGR;5",
|
(2, 16): "BGR;5",
|
||||||
(2, 24): "BGR",
|
(2, 24): "BGR",
|
||||||
(2, 32): "BGRA",
|
(2, 32): "BGRA",
|
||||||
|
@ -74,6 +75,8 @@ class TgaImageFile(ImageFile.ImageFile):
|
||||||
self.mode = "L"
|
self.mode = "L"
|
||||||
if depth == 1:
|
if depth == 1:
|
||||||
self.mode = "1" # ???
|
self.mode = "1" # ???
|
||||||
|
elif depth == 16:
|
||||||
|
self.mode = "LA"
|
||||||
elif imagetype in (1, 9):
|
elif imagetype in (1, 9):
|
||||||
self.mode = "P"
|
self.mode = "P"
|
||||||
elif imagetype in (2, 10):
|
elif imagetype in (2, 10):
|
||||||
|
@ -134,6 +137,7 @@ class TgaImageFile(ImageFile.ImageFile):
|
||||||
SAVE = {
|
SAVE = {
|
||||||
"1": ("1", 1, 0, 3),
|
"1": ("1", 1, 0, 3),
|
||||||
"L": ("L", 8, 0, 3),
|
"L": ("L", 8, 0, 3),
|
||||||
|
"LA": ("LA", 16, 0, 3),
|
||||||
"P": ("P", 8, 1, 1),
|
"P": ("P", 8, 1, 1),
|
||||||
"RGB": ("BGR", 24, 0, 2),
|
"RGB": ("BGR", 24, 0, 2),
|
||||||
"RGBA": ("BGRA", 32, 0, 2),
|
"RGBA": ("BGRA", 32, 0, 2),
|
||||||
|
@ -152,7 +156,7 @@ def _save(im, fp, filename):
|
||||||
else:
|
else:
|
||||||
colormapfirst, colormaplength, colormapentry = 0, 0, 0
|
colormapfirst, colormaplength, colormapentry = 0, 0, 0
|
||||||
|
|
||||||
if im.mode == "RGBA":
|
if im.mode in ("LA", "RGBA"):
|
||||||
flags = 8
|
flags = 8
|
||||||
else:
|
else:
|
||||||
flags = 0
|
flags = 0
|
||||||
|
|
Loading…
Reference in New Issue
Block a user