def test_merge_noops(self): """ Check that black image is returned for no ops. """ merger = BandMerger(mode='RGB') img_opts = ImageOptions('RGB') result = merger.merge([self.img0], img_opts) img = result.as_image() eq_(img.size, (10, 10)) eq_(img.getpixel((0, 0)), (0, 0, 0))
def test_merge_noops(self): """ Check that black image is returned for no ops. """ merger = BandMerger(mode="RGB") img_opts = ImageOptions("RGB") result = merger.merge([self.img0], img_opts) img = result.as_image() assert img.size == (10, 10) assert img.getpixel((0, 0)) == (0, 0, 0)
def test_merge_no_source(self): """ Check that empty source list returns BlankImageSource. """ merger = BandMerger(mode='RGB') merger.add_ops(dst_band=0, src_img=0, src_band=0) img_opts = ImageOptions('RGBA', transparent=True) result = merger.merge([], img_opts, size=(10, 10)) img = result.as_image() eq_(img.size, (10, 10)) eq_(img.getpixel((0, 0)), (255, 255, 255, 0))
def test_rgb_merge_missing(self): """ Check missing band is set to 0 """ merger = BandMerger(mode="RGB") merger.add_ops(dst_band=0, src_img=2, src_band=1) merger.add_ops(dst_band=2, src_img=1, src_band=2) img_opts = ImageOptions("RGB") result = merger.merge([self.img0, self.img1, self.img2, self.img3], img_opts) img = result.as_image() assert img.getpixel((0, 0)) == (210, 0, 120)
def test_l_merge(self): """ Check merge bands to grayscale image """ merger = BandMerger(mode="L") merger.add_ops(dst_band=0, src_img=0, src_band=2, factor=0.2) merger.add_ops(dst_band=0, src_img=2, src_band=1, factor=0.3) merger.add_ops(dst_band=0, src_img=3, src_band=1, factor=0.5) img_opts = ImageOptions("L") result = merger.merge([self.img0, self.img1, self.img2, self.img3], img_opts) img = result.as_image() assert img.getpixel((0, 0)) == int(20 * 0.2) + int(210 * 0.3) + int(255 * 0.5)
def test_rgba_merge_missing_a(self): """ Check that missing alpha band defaults to opaque """ merger = BandMerger(mode="RGBA") merger.add_ops(dst_band=1, src_img=0, src_band=0, factor=0.5) merger.add_ops(dst_band=1, src_img=3, src_band=1, factor=0.5) merger.add_ops(dst_band=0, src_img=2, src_band=1) merger.add_ops(dst_band=2, src_img=1, src_band=2) img_opts = ImageOptions("RGBA") result = merger.merge([self.img0, self.img1, self.img2, self.img3], img_opts) img = result.as_image() assert img.getpixel((0, 0)) == (210, 127, 120, 255)
def test_rgb_merge(self): """ Check merge of RGB bands """ merger = BandMerger(mode="RGB") merger.add_ops(dst_band=1, src_img=0, src_band=0, factor=0.5) merger.add_ops(dst_band=1, src_img=3, src_band=1, factor=0.5) merger.add_ops(dst_band=0, src_img=2, src_band=1) merger.add_ops(dst_band=2, src_img=1, src_band=2) img_opts = ImageOptions("RGB") result = merger.merge([self.img0, self.img1, self.img2, self.img3], img_opts) img = result.as_image() assert img.getpixel((0, 0)) == (210, 127, 120)
def test_rgba_merge(self): """ Check merge of RGBA bands """ merger = BandMerger(mode='RGBA') merger.add_ops(dst_band=1, src_img=0, src_band=0, factor=0.5) merger.add_ops(dst_band=1, src_img=3, src_band=1, factor=0.5) merger.add_ops(dst_band=0, src_img=2, src_band=1) merger.add_ops(dst_band=2, src_img=1, src_band=2) merger.add_ops(dst_band=3, src_img=1, src_band=1) img_opts = ImageOptions('RGBA') result = merger.merge([self.img0, self.img1, self.img2, self.img3], img_opts) img = result.as_image() eq_(img.getpixel((0, 0)), (210, 127, 120, 110))
def test_from_mixed_merge(self): """ Check merge RGBA bands from image without alpha (mixed) """ merger = BandMerger(mode="RGBA") merger.add_ops(dst_band=0, src_img=0, src_band=2) merger.add_ops(dst_band=1, src_img=0, src_band=1) merger.add_ops(dst_band=2, src_img=0, src_band=0) merger.add_ops(dst_band=3, src_img=0, src_band=3) img = Image.new("RGB", (10, 10), (0, 100, 200)) src_img = ImageSource(img) img_opts = ImageOptions("RGBA") result = merger.merge([src_img], img_opts) img = result.as_image() assert img.mode == "RGBA" assert img.getpixel((0, 0)) == (200, 100, 0, 255)
def test_p_merge(self): """ Check merge bands to paletted image """ merger = BandMerger(mode='RGB') merger.add_ops(dst_band=1, src_img=0, src_band=0, factor=0.5) merger.add_ops(dst_band=1, src_img=3, src_band=1, factor=0.5) merger.add_ops(dst_band=0, src_img=2, src_band=1) merger.add_ops(dst_band=2, src_img=1, src_band=2) img_opts = ImageOptions('P', format='image/png', encoding_options={'quantizer': 'mediancut'}) result = merger.merge([self.img0, self.img1, self.img2, self.img3], img_opts) # need to encode to get conversion to P img = Image.open(result.as_buffer()) eq_(img.mode, 'P') img = img.convert('RGB') eq_(img.getpixel((0, 0)), (210, 127, 120))
def test_from_p_merge(self): """ Check merge bands from paletted image """ merger = BandMerger(mode="RGB") merger.add_ops(dst_band=0, src_img=0, src_band=2) merger.add_ops(dst_band=1, src_img=0, src_band=1) merger.add_ops(dst_band=2, src_img=0, src_band=0) img = Image.new("RGB", (10, 10), (0, 100, 200)).quantize(256) assert img.mode == "P" # src img is P but we can still access RGB bands src_img = ImageSource(img) img_opts = ImageOptions("RGB") result = merger.merge([src_img], img_opts) img = result.as_image() assert img.mode == "RGB" assert img.getpixel((0, 0)) == (200, 100, 0)
def test_p_merge(self): """ Check merge bands to paletted image """ merger = BandMerger(mode="RGB") merger.add_ops(dst_band=1, src_img=0, src_band=0, factor=0.5) merger.add_ops(dst_band=1, src_img=3, src_band=1, factor=0.5) merger.add_ops(dst_band=0, src_img=2, src_band=1) merger.add_ops(dst_band=2, src_img=1, src_band=2) img_opts = ImageOptions( "P", format="image/png", encoding_options={"quantizer": "mediancut"} ) result = merger.merge([self.img0, self.img1, self.img2, self.img3], img_opts) # need to encode to get conversion to P img = Image.open(result.as_buffer()) assert img.mode == "P" img = img.convert("RGB") assert img.getpixel((0, 0)) == (210, 127, 120)
def test_merge_missing_source(self): """ Check that empty source list or source list with missing images returns BlankImageSource. """ merger = BandMerger(mode="RGB") merger.add_ops(dst_band=0, src_img=0, src_band=0) merger.add_ops(dst_band=1, src_img=1, src_band=0) merger.add_ops(dst_band=2, src_img=2, src_band=0) img_opts = ImageOptions("RGBA", transparent=True) result = merger.merge([], img_opts, size=(10, 10)) img = result.as_image() assert img.size == (10, 10) assert img.getpixel((0, 0)) == (255, 255, 255, 0) result = merger.merge([self.img0, self.img1], img_opts, size=(10, 10)) img = result.as_image() assert img.size == (10, 10) assert img.getpixel((0, 0)) == (255, 255, 255, 0)