ensure that the transparency level option is passed to the octree encoder - closes #1556
This commit is contained in:
parent
a1e00cc374
commit
eda4436b51
5 changed files with 80 additions and 2 deletions
|
@ -239,7 +239,7 @@ void save_to_stream(T const& image,
|
||||||
else if (colors < 0)
|
else if (colors < 0)
|
||||||
save_as_png(stream, image, compression, strategy);
|
save_as_png(stream, image, compression, strategy);
|
||||||
else if (use_octree)
|
else if (use_octree)
|
||||||
save_as_png8_oct(stream, image, colors, compression, strategy);
|
save_as_png8_oct(stream, image, colors, compression, strategy, trans_mode);
|
||||||
else
|
else
|
||||||
save_as_png8_hex(stream, image, colors, compression, strategy, trans_mode, gamma);
|
save_as_png8_hex(stream, image, colors, compression, strategy, trans_mode, gamma);
|
||||||
}
|
}
|
||||||
|
@ -288,7 +288,7 @@ void save_to_stream(T const& image,
|
||||||
if (colors < 0)
|
if (colors < 0)
|
||||||
save_as_png(stream, image, compression, strategy);
|
save_as_png(stream, image, compression, strategy);
|
||||||
else if (use_octree)
|
else if (use_octree)
|
||||||
save_as_png8_oct(stream, image, colors, compression, strategy);
|
save_as_png8_oct(stream, image, colors, compression, strategy, trans_mode);
|
||||||
else
|
else
|
||||||
save_as_png8_hex(stream, image, colors, compression, strategy, trans_mode, gamma);
|
save_as_png8_hex(stream, image, colors, compression, strategy, trans_mode, gamma);
|
||||||
}
|
}
|
||||||
|
|
BIN
tests/python_tests/images/support/transparency/white0.png
Normal file
BIN
tests/python_tests/images/support/transparency/white0.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 242 B |
BIN
tests/python_tests/images/support/transparency/white1.png
Normal file
BIN
tests/python_tests/images/support/transparency/white1.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 257 B |
BIN
tests/python_tests/images/support/transparency/white2.png
Normal file
BIN
tests/python_tests/images/support/transparency/white2.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 258 B |
78
tests/python_tests/png_encoding_test.py
Normal file
78
tests/python_tests/png_encoding_test.py
Normal file
|
@ -0,0 +1,78 @@
|
||||||
|
#!/usr/bin/env python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
import sys
|
||||||
|
import os, mapnik
|
||||||
|
from timeit import Timer, time
|
||||||
|
from nose.tools import *
|
||||||
|
from utilities import execution_path
|
||||||
|
|
||||||
|
def setup():
|
||||||
|
# All of the paths used are relative, if we run the tests
|
||||||
|
# from another directory we need to chdir()
|
||||||
|
os.chdir(execution_path('.'))
|
||||||
|
|
||||||
|
tmp_dir = '/tmp/mapnik-png/'
|
||||||
|
if not os.path.exists(tmp_dir):
|
||||||
|
os.makedirs(tmp_dir)
|
||||||
|
|
||||||
|
def test_transparency_levels():
|
||||||
|
# create partial transparency image
|
||||||
|
im = mapnik.Image(256,256)
|
||||||
|
im.background = mapnik.Color('rgba(255,255,255,.5)')
|
||||||
|
c2 = mapnik.Color('rgba(255,255,0,.2)')
|
||||||
|
c3 = mapnik.Color('rgb(0,255,255)')
|
||||||
|
for y in range(0,im.height()/2):
|
||||||
|
for x in range(0,im.width()/2):
|
||||||
|
im.set_pixel(x,y,c2)
|
||||||
|
for y in range(im.height()/2,im.height()):
|
||||||
|
for x in range(im.width()/2,im.width()):
|
||||||
|
im.set_pixel(x,y,c3)
|
||||||
|
|
||||||
|
t0 = tmp_dir + 'white0.png'
|
||||||
|
t2 = tmp_dir + 'white2.png'
|
||||||
|
t1 = tmp_dir + 'white1.png'
|
||||||
|
|
||||||
|
# octree
|
||||||
|
format = 'png8:m=o:t=0'
|
||||||
|
im.save(t0,format)
|
||||||
|
im_in = mapnik.Image.open(t0)
|
||||||
|
t0_len = len(im_in.tostring(format))
|
||||||
|
eq_(t0_len,len(mapnik.Image.open('images/support/transparency/white0.png').tostring(format)))
|
||||||
|
format = 'png8:m=o:t=1'
|
||||||
|
im.save(t1,format)
|
||||||
|
im_in = mapnik.Image.open(t1)
|
||||||
|
t1_len = len(im_in.tostring(format))
|
||||||
|
eq_(len(im.tostring(format)),len(mapnik.Image.open('images/support/transparency/white1.png').tostring(format)))
|
||||||
|
format = 'png8:m=o:t=2'
|
||||||
|
im.save(t2,format)
|
||||||
|
im_in = mapnik.Image.open(t2)
|
||||||
|
t2_len = len(im_in.tostring(format))
|
||||||
|
eq_(len(im.tostring(format)),len(mapnik.Image.open('images/support/transparency/white2.png').tostring(format)))
|
||||||
|
|
||||||
|
eq_(t0_len < t1_len < t2_len,True)
|
||||||
|
|
||||||
|
# hextree
|
||||||
|
format = 'png8:m=h:t=0'
|
||||||
|
im.save(t0,format)
|
||||||
|
im_in = mapnik.Image.open(t0)
|
||||||
|
t0_len = len(im_in.tostring(format))
|
||||||
|
eq_(t0_len,len(mapnik.Image.open('images/support/transparency/white0.png').tostring(format)))
|
||||||
|
format = 'png8:m=h:t=1'
|
||||||
|
im.save(t1,format)
|
||||||
|
im_in = mapnik.Image.open(t1)
|
||||||
|
t1_len = len(im_in.tostring(format))
|
||||||
|
eq_(len(im.tostring(format)),len(mapnik.Image.open('images/support/transparency/white1.png').tostring(format)))
|
||||||
|
format = 'png8:m=h:t=2'
|
||||||
|
im.save(t2,format)
|
||||||
|
im_in = mapnik.Image.open(t2)
|
||||||
|
t2_len = len(im_in.tostring(format))
|
||||||
|
eq_(len(im.tostring(format)),len(mapnik.Image.open('images/support/transparency/white2.png').tostring(format)))
|
||||||
|
|
||||||
|
eq_(t0_len < t1_len < t2_len,True)
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
setup()
|
||||||
|
for t in dir():
|
||||||
|
if 'test_' in t:
|
||||||
|
eval(t)()
|
Loading…
Reference in a new issue