コード例 #1
0
ファイル: test_image_reduce.py プロジェクト: wkpna/Pillow
    def assert_compare_images(self, a, b, max_average_diff, max_diff=255):
        self.assertEqual(a.mode, b.mode,
                         "got mode %r, expected %r" % (a.mode, b.mode))
        self.assertEqual(a.size, b.size,
                         "got size %r, expected %r" % (a.size, b.size))

        a, b = convert_to_comparable(a, b)

        bands = ImageMode.getmode(a.mode).bands
        for band, ach, bch in zip(bands, a.split(), b.split()):
            ch_diff = ImageMath.eval("convert(abs(a - b), 'L')", a=ach, b=bch)
            ch_hist = ch_diff.histogram()

            average_diff = sum(i * num
                               for i, num in enumerate(ch_hist)) / float(
                                   a.size[0] * a.size[1])
            self.assertGreaterEqual(
                max_average_diff,
                average_diff,
                ("average pixel value difference {:.4f} > expected {:.4f} "
                 "for '{}' band").format(average_diff, max_average_diff, band),
            )

            last_diff = [i for i, num in enumerate(ch_hist) if num > 0][-1]
            self.assertGreaterEqual(
                max_diff,
                last_diff,
                "max pixel value difference {} > expected {} for '{}' band".
                format(last_diff, max_diff, band),
            )
コード例 #2
0
ファイル: test_imagecms.py プロジェクト: wiredfool/Pillow
        def create_test_image():
            # set up test image with something interesting in the tested aux
            # channel.
            nine_grid_deltas = [
                (-1, -1), (-1, 0), (-1, 1),
                ( 0, -1), ( 0, 0), ( 0, 1),
                ( 1, -1), ( 1, 0), ( 1, 1),
            ]
            chans = []
            bands = ImageMode.getmode(mode).bands
            for band_ndx in range(len(bands)):
                channel_type = 'L'  # 8-bit unorm
                channel_pattern = hopper(channel_type)

                # paste pattern with varying offsets to avoid correlation
                # potentially hiding some bugs (like channels getting mixed).
                paste_offset = (
                    int(band_ndx / float(len(bands)) * channel_pattern.size[0]),
                    int(band_ndx / float(len(bands) * 2) * channel_pattern.size[1])
                )
                channel_data = Image.new(channel_type, channel_pattern.size)
                for delta in nine_grid_deltas:
                    channel_data.paste(channel_pattern, tuple(paste_offset[c] + delta[c]*channel_pattern.size[c] for c in range(2)))
                chans.append(channel_data)
            return Image.merge(mode, chans)
コード例 #3
0
        def create_test_image():
            # set up test image with something interesting in the tested aux
            # channel.
            nine_grid_deltas = [
                (-1, -1),
                (-1, 0),
                (-1, 1),
                (0, -1),
                (0, 0),
                (0, 1),
                (1, -1),
                (1, 0),
                (1, 1),
            ]
            chans = []
            bands = ImageMode.getmode(mode).bands
            for band_ndx in range(len(bands)):
                channel_type = 'L'  # 8-bit unorm
                channel_pattern = hopper(channel_type)

                # paste pattern with varying offsets to avoid correlation
                # potentially hiding some bugs (like channels getting mixed).
                paste_offset = (int(band_ndx / float(len(bands)) *
                                    channel_pattern.size[0]),
                                int(band_ndx / float(len(bands) * 2) *
                                    channel_pattern.size[1]))
                channel_data = Image.new(channel_type, channel_pattern.size)
                for delta in nine_grid_deltas:
                    channel_data.paste(
                        channel_pattern,
                        tuple(paste_offset[c] +
                              delta[c] * channel_pattern.size[c]
                              for c in range(2)))
                chans.append(channel_data)
            return Image.merge(mode, chans)
コード例 #4
0
def color_count(image):
    """ Return the number of color values in the input image --
        this is the number of pixels times the band count
        of the image.
    """
    mode_descriptor = ImageMode.getmode(image.mode)
    width, height = image.size
    return width * height * len(mode_descriptor.bands)
コード例 #5
0
ファイル: pipeline.py プロジェクト: CallMeMhz/django-instakit
    def __init__(self, default_factory, *args, **kwargs):
        if default_factory is None:
            default_factory = NOOp
        if not callable(default_factory):
            raise AttributeError(
                "ChannelFork() requires a callable default_factory.")

        self.channels = ImageMode.getmode(kwargs.pop('mode',
                                                     self.default_mode))

        super(ChannelFork, self).__init__(default_factory, *args, **kwargs)
コード例 #6
0
ファイル: pipeline.py プロジェクト: barseghyanartur/instakit
 def __init__(self, default_factory, *args, **kwargs):
     if default_factory is None:
         default_factory = NOOp
     if not callable(default_factory):
         raise AttributeError(
             "ChannelFork() requires a callable default_factory.")
     
     self.channels = ImageMode.getmode(
         kwargs.pop('mode', self.default_mode))
     
     super(ChannelFork, self).__init__(default_factory, *args, **kwargs)
コード例 #7
0
ファイル: test_image_reduce.py プロジェクト: vkresch/Pillow
def get_image(mode):
    mode_info = ImageMode.getmode(mode)
    if mode_info.basetype == "L":
        bands = [gradients_image]
        for _ in mode_info.bands[1:]:
            # rotate previous image
            band = bands[-1].transpose(Image.ROTATE_90)
            bands.append(band)
        # Correct alpha channel by transforming completely transparent pixels.
        # Low alpha values also emphasize error after alpha multiplication.
        if mode.endswith("A"):
            bands[-1] = bands[-1].point(lambda x: int(85 + x / 1.5))
        im = Image.merge(mode, bands)
    else:
        assert len(mode_info.bands) == 1
        im = gradients_image.convert(mode)
    # change the height to make a not-square image
    return im.crop((0, 0, im.width, im.height - 5))
コード例 #8
0
def assert_compare_images(a, b, max_average_diff, max_diff=255):
    assert a.mode == b.mode, f"got mode {repr(a.mode)}, expected {repr(b.mode)}"
    assert a.size == b.size, f"got size {repr(a.size)}, expected {repr(b.size)}"

    a, b = convert_to_comparable(a, b)

    bands = ImageMode.getmode(a.mode).bands
    for band, ach, bch in zip(bands, a.split(), b.split()):
        ch_diff = ImageMath.eval("convert(abs(a - b), 'L')", a=ach, b=bch)
        ch_hist = ch_diff.histogram()

        average_diff = sum(
            i * num for i, num in enumerate(ch_hist)) / (a.size[0] * a.size[1])
        msg = (f"average pixel value difference {average_diff:.4f} > "
               f"expected {max_average_diff:.4f} for '{band}' band")
        assert max_average_diff >= average_diff, msg

        last_diff = [i for i, num in enumerate(ch_hist) if num > 0][-1]
        assert max_diff >= last_diff, (
            f"max pixel value difference {last_diff} > expected {max_diff} "
            f"for '{band}' band")
コード例 #9
0
ファイル: test_image_reduce.py プロジェクト: taokuanhu/Pillow
def assert_compare_images(a, b, max_average_diff, max_diff=255):
    assert a.mode == b.mode, "got mode %r, expected %r" % (a.mode, b.mode)
    assert a.size == b.size, "got size %r, expected %r" % (a.size, b.size)

    a, b = convert_to_comparable(a, b)

    bands = ImageMode.getmode(a.mode).bands
    for band, ach, bch in zip(bands, a.split(), b.split()):
        ch_diff = ImageMath.eval("convert(abs(a - b), 'L')", a=ach, b=bch)
        ch_hist = ch_diff.histogram()

        average_diff = sum(
            i * num for i, num in enumerate(ch_hist)) / (a.size[0] * a.size[1])
        msg = ("average pixel value difference {:.4f} > expected {:.4f} "
               "for '{}' band".format(average_diff, max_average_diff, band))
        assert max_average_diff >= average_diff, msg

        last_diff = [i for i, num in enumerate(ch_hist) if num > 0][-1]
        assert (
            max_diff >= last_diff
        ), "max pixel value difference {} > expected {} for '{}' band".format(
            last_diff, max_diff, band)
コード例 #10
0
ファイル: mode.py プロジェクト: andrewmalta/instakit
import contextlib
import numpy
import os

from PIL import Image, ImageMode
from enum import auto, unique

from clu.constants.consts import DEBUG, ENCODING
from clu.enums import alias, AliasingEnum
from clu.naming import split_abbreviations
from clu.predicates import attr, getpyattr, isclasstype, or_none
from clu.typespace.namespace import Namespace
from clu.typology import string_types

junkdrawer = Namespace()
junkdrawer.imode = lambda image: ImageMode.getmode(image.mode)

ImageMode.getmode('RGB')  # one call must be made to getmode()
# to properly initialize ImageMode._modes:

junkdrawer.modes = ImageMode._modes
junkdrawer.types = Image._MODE_CONV
junkdrawer.ismap = Image._MAPMODES

mode_strings = tuple(junkdrawer.modes.keys())
dtypes_for_modes = {k: v[0] for k, v in junkdrawer.types.items()}

junkdrawer.idxmode = lambda idx: ImageMode.getmode(mode_strings[idx])
junkdrawer.is_mapped = lambda mode: mode in junkdrawer.ismap

コード例 #11
0
ファイル: mode.py プロジェクト: fish2000/instakit
#!/usr/bin/env python
# encoding: utf-8
from __future__ import print_function

import contextlib
import numpy
import os

from PIL import Image, ImageMode
from enum import auto, unique

from instakit.abc import Enum
from instakit.utils import misc

junkdrawer = misc.Namespace()
junkdrawer.imode = lambda image: ImageMode.getmode(image.mode)

def split_abbreviations(s):
    """ Split a string into a tuple of its unique constituents,
        based on its internal capitalization -- to wit:
        
        >>> split_abbreviations('RGB')
        ('R', 'G', 'B')
        >>> split_abbreviations('CMYK')
        ('C', 'M', 'Y', 'K')
        >>> split_abbreviations('YCbCr')
        ('Y', 'Cb', 'Cr')
        >>> split_abbreviations('sRGB')
        ('R', 'G', 'B')
        >>> split_abbreviations('XYZZ')
        ('X', 'Y', 'Z')
コード例 #12
0
ファイル: test_imagemode.py プロジェクト: 10printhello/gitpil
from tester import *

from PIL import Image
from PIL import ImageMode

ImageMode.getmode("1")
ImageMode.getmode("L")
ImageMode.getmode("P")
ImageMode.getmode("RGB")
ImageMode.getmode("I")
ImageMode.getmode("F")

m = ImageMode.getmode("1")
assert_equal(m.mode, "1")
assert_equal(m.bands, ("1",))
assert_equal(m.basemode, "L")
assert_equal(m.basetype, "L")

m = ImageMode.getmode("RGB")
assert_equal(m.mode, "RGB")
assert_equal(m.bands, ("R", "G", "B"))
assert_equal(m.basemode, "RGB")
assert_equal(m.basetype, "L")
コード例 #13
0
    def test_sanity(self):

        im = hopper()
        im.mode

        from PIL import ImageMode

        ImageMode.getmode("1")
        ImageMode.getmode("L")
        ImageMode.getmode("P")
        ImageMode.getmode("RGB")
        ImageMode.getmode("I")
        ImageMode.getmode("F")

        m = ImageMode.getmode("1")
        self.assertEqual(m.mode, "1")
        self.assertEqual(m.bands, ("1",))
        self.assertEqual(m.basemode, "L")
        self.assertEqual(m.basetype, "L")

        m = ImageMode.getmode("RGB")
        self.assertEqual(m.mode, "RGB")
        self.assertEqual(m.bands, ("R", "G", "B"))
        self.assertEqual(m.basemode, "RGB")
        self.assertEqual(m.basetype, "L")
コード例 #14
0
ファイル: test_image_mode.py プロジェクト: dwastberg/Pillow
def test_sanity():

    with hopper() as im:
        im.mode

    ImageMode.getmode("1")
    ImageMode.getmode("L")
    ImageMode.getmode("P")
    ImageMode.getmode("RGB")
    ImageMode.getmode("I")
    ImageMode.getmode("F")

    m = ImageMode.getmode("1")
    assert m.mode == "1"
    assert str(m) == "1"
    assert m.bands == ("1",)
    assert m.basemode == "L"
    assert m.basetype == "L"

    for mode in (
        "I;16",
        "I;16S",
        "I;16L",
        "I;16LS",
        "I;16B",
        "I;16BS",
        "I;16N",
        "I;16NS",
    ):
        m = ImageMode.getmode(mode)
        assert m.mode == mode
        assert str(m) == mode
        assert m.bands == ("I",)
        assert m.basemode == "L"
        assert m.basetype == "L"

    m = ImageMode.getmode("RGB")
    assert m.mode == "RGB"
    assert str(m) == "RGB"
    assert m.bands == ("R", "G", "B")
    assert m.basemode == "RGB"
    assert m.basetype == "L"
コード例 #15
0
ファイル: test_imagemode.py プロジェクト: 13609594236/Pillow
    def test_sanity(self):
        ImageMode.getmode("1")
        ImageMode.getmode("L")
        ImageMode.getmode("P")
        ImageMode.getmode("RGB")
        ImageMode.getmode("I")
        ImageMode.getmode("F")

        m = ImageMode.getmode("1")
        self.assertEqual(m.mode, "1")
        self.assertEqual(m.bands, ("1",))
        self.assertEqual(m.basemode, "L")
        self.assertEqual(m.basetype, "L")

        m = ImageMode.getmode("RGB")
        self.assertEqual(m.mode, "RGB")
        self.assertEqual(m.bands, ("R", "G", "B"))
        self.assertEqual(m.basemode, "RGB")
        self.assertEqual(m.basetype, "L")
コード例 #16
0
    def test_sanity(self):

        im = hopper()
        im.mode

        from PIL import ImageMode

        ImageMode.getmode("1")
        ImageMode.getmode("L")
        ImageMode.getmode("P")
        ImageMode.getmode("RGB")
        ImageMode.getmode("I")
        ImageMode.getmode("F")

        m = ImageMode.getmode("1")
        self.assertEqual(m.mode, "1")
        self.assertEqual(str(m), "1")
        self.assertEqual(m.bands, ("1", ))
        self.assertEqual(m.basemode, "L")
        self.assertEqual(m.basetype, "L")

        for mode in ("I;16", "I;16S", "I;16L", "I;16LS", "I;16B", "I;16BS",
                     "I;16N", "I;16NS"):
            m = ImageMode.getmode(mode)
            self.assertEqual(m.mode, mode)
            self.assertEqual(str(m), mode)
            self.assertEqual(m.bands, ("I", ))
            self.assertEqual(m.basemode, "L")
            self.assertEqual(m.basetype, "L")

        m = ImageMode.getmode("RGB")
        self.assertEqual(m.mode, "RGB")
        self.assertEqual(str(m), "RGB")
        self.assertEqual(m.bands, ("R", "G", "B"))
        self.assertEqual(m.basemode, "RGB")
        self.assertEqual(m.basetype, "L")
コード例 #17
0
ファイル: test_imagemode.py プロジェクト: amonnier/hooter
from tester import *

from PIL import Image
from PIL import ImageMode

ImageMode.getmode("1")
ImageMode.getmode("L")
ImageMode.getmode("P")
ImageMode.getmode("RGB")
ImageMode.getmode("I")
ImageMode.getmode("F")

m = ImageMode.getmode("1")
assert_equal(m.mode, "1")
assert_equal(m.bands, ("1", ))
assert_equal(m.basemode, "L")
assert_equal(m.basetype, "L")

m = ImageMode.getmode("RGB")
assert_equal(m.mode, "RGB")
assert_equal(m.bands, ("R", "G", "B"))
assert_equal(m.basemode, "RGB")
assert_equal(m.basetype, "L")
コード例 #18
0
ファイル: pipeline.py プロジェクト: barseghyanartur/instakit
 def _set_mode(self, mode_string):
     self.channels = ImageMode.getmode(mode_string)
コード例 #19
0
ファイル: pipeline.py プロジェクト: CallMeMhz/django-instakit
 def _set_mode(self, mode_string):
     self.channels = ImageMode.getmode(mode_string)