Skip to content

Commit 92dc8f4

Browse files
authored
Revert pull request #3838 (#3898)
Revert pull request #3838
2 parents f1ed792 + 231fe4d commit 92dc8f4

12 files changed

Lines changed: 78 additions & 71 deletions

Tests/images/hopper_I.png

-23.6 KB
Binary file not shown.

Tests/test_file_png.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -295,7 +295,7 @@ def test_save_greyscale_transparency(self):
295295
for mode, num_transparent in {
296296
"1": 1994,
297297
"L": 559,
298-
"I": 4096,
298+
"I": 559,
299299
}.items():
300300
in_file = "Tests/images/"+mode.lower()+"_trns.png"
301301
im = Image.open(in_file)

Tests/test_image_convert.py

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,6 @@ def test_default(self):
3838

3939
def _test_float_conversion(self, im):
4040
orig = im.getpixel((5, 5))
41-
if im.mode[0] == 'I':
42-
orig //= 256
4341
converted = im.convert('F').getpixel((5, 5))
4442
self.assertEqual(orig, converted)
4543

@@ -233,11 +231,3 @@ def test_matrix_identity(self):
233231
# Assert
234232
# No change
235233
self.assert_image_equal(converted_im, im)
236-
237-
def test_i_to_l(self):
238-
im = Image.open("Tests/images/hopper_I.png").convert("L")
239-
self.assert_image_similar(hopper("L"), im, 0.02)
240-
241-
def test_i_to_rgb(self):
242-
im = Image.open("Tests/images/hopper_I.png").convert("RGB")
243-
self.assert_image_similar(hopper("L").convert("RGB"), im, 0.05)

Tests/test_image_getcolors.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,13 @@ def getcolors(mode, limit=None):
1717

1818
self.assertEqual(getcolors("1"), 2)
1919
self.assertEqual(getcolors("L"), 255)
20+
self.assertEqual(getcolors("I"), 255)
2021
self.assertEqual(getcolors("F"), 255)
2122
self.assertEqual(getcolors("P"), 90) # fixed palette
2223
self.assertIsNone(getcolors("RGB"))
2324
self.assertIsNone(getcolors("RGBA"))
2425
self.assertIsNone(getcolors("CMYK"))
2526
self.assertIsNone(getcolors("YCbCr"))
26-
self.assertIsNone(getcolors("I"))
2727

2828
self.assertIsNone(getcolors("L", 128))
2929
self.assertEqual(getcolors("L", 1024), 255)

Tests/test_image_getdata.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ def getdata(mode):
2121

2222
self.assertEqual(getdata("1"), (0, 960, 960))
2323
self.assertEqual(getdata("L"), (16, 960, 960))
24-
self.assertEqual(getdata("I"), (4313, 960, 960))
24+
self.assertEqual(getdata("I"), (16, 960, 960))
2525
self.assertEqual(getdata("F"), (16.0, 960, 960))
2626
self.assertEqual(getdata("RGB"), ((11, 13, 52), 960, 960))
2727
self.assertEqual(getdata("RGBA"), ((11, 13, 52, 255), 960, 960))

Tests/test_image_getextrema.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ def extrema(mode):
1111

1212
self.assertEqual(extrema("1"), (0, 255))
1313
self.assertEqual(extrema("L"), (0, 255))
14-
self.assertEqual(extrema("I"), (150, 65280))
14+
self.assertEqual(extrema("I"), (0, 255))
1515
self.assertEqual(extrema("F"), (0, 255))
1616
self.assertEqual(extrema("P"), (0, 225)) # fixed palette
1717
self.assertEqual(
@@ -20,7 +20,7 @@ def extrema(mode):
2020
extrema("RGBA"), ((0, 255), (0, 255), (0, 255), (255, 255)))
2121
self.assertEqual(
2222
extrema("CMYK"), ((0, 255), (0, 255), (0, 255), (0, 0)))
23-
self.assertEqual(extrema("I;16"), (150, 65280))
23+
self.assertEqual(extrema("I;16"), (0, 255))
2424

2525
def test_true_16(self):
2626
im = Image.open("Tests/images/16_bit_noise.tif")

Tests/test_image_histogram.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ def histogram(mode):
1111

1212
self.assertEqual(histogram("1"), (256, 0, 10994))
1313
self.assertEqual(histogram("L"), (256, 0, 638))
14-
self.assertEqual(histogram("I"), (256, 1, 662))
14+
self.assertEqual(histogram("I"), (256, 0, 638))
1515
self.assertEqual(histogram("F"), (256, 0, 638))
1616
self.assertEqual(histogram("P"), (256, 0, 1871))
1717
self.assertEqual(histogram("RGB"), (768, 4, 675))

Tests/test_imagemath.py

Lines changed: 28 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -31,22 +31,22 @@ class TestImageMath(PillowTestCase):
3131
def test_sanity(self):
3232
self.assertEqual(ImageMath.eval("1"), 1)
3333
self.assertEqual(ImageMath.eval("1+A", A=2), 3)
34-
self.assertEqual(pixel(ImageMath.eval("A+B", A=A, B=B)), "I 768")
35-
self.assertEqual(pixel(ImageMath.eval("A+B", images)), "I 768")
34+
self.assertEqual(pixel(ImageMath.eval("A+B", A=A, B=B)), "I 3")
35+
self.assertEqual(pixel(ImageMath.eval("A+B", images)), "I 3")
3636
self.assertEqual(pixel(ImageMath.eval("float(A)+B", images)), "F 3.0")
3737
self.assertEqual(pixel(
38-
ImageMath.eval("int(float(A)+B)", images)), "I 768")
38+
ImageMath.eval("int(float(A)+B)", images)), "I 3")
3939

4040
def test_ops(self):
4141

42-
self.assertEqual(pixel(ImageMath.eval("-A", images)), "I -256")
42+
self.assertEqual(pixel(ImageMath.eval("-A", images)), "I -1")
4343
self.assertEqual(pixel(ImageMath.eval("+B", images)), "L 2")
4444

45-
self.assertEqual(pixel(ImageMath.eval("A+B", images)), "I 768")
46-
self.assertEqual(pixel(ImageMath.eval("A-B", images)), "I -256")
47-
self.assertEqual(pixel(ImageMath.eval("A*B", images)), "I 131072")
45+
self.assertEqual(pixel(ImageMath.eval("A+B", images)), "I 3")
46+
self.assertEqual(pixel(ImageMath.eval("A-B", images)), "I -1")
47+
self.assertEqual(pixel(ImageMath.eval("A*B", images)), "I 2")
4848
self.assertEqual(pixel(ImageMath.eval("A/B", images)), "I 0")
49-
self.assertEqual(pixel(ImageMath.eval("B**2", images)), "I 262144")
49+
self.assertEqual(pixel(ImageMath.eval("B**2", images)), "I 4")
5050
self.assertEqual(pixel(
5151
ImageMath.eval("B**33", images)), "I 2147483647")
5252

@@ -72,61 +72,61 @@ def test_convert(self):
7272
ImageMath.eval("convert(A+B, 'RGB')", images)), "RGB (3, 3, 3)")
7373

7474
def test_compare(self):
75-
self.assertEqual(pixel(ImageMath.eval("min(A, B)", images)), "I 256")
76-
self.assertEqual(pixel(ImageMath.eval("max(A, B)", images)), "I 512")
77-
self.assertEqual(pixel(ImageMath.eval("A == 256", images)), "I 1")
75+
self.assertEqual(pixel(ImageMath.eval("min(A, B)", images)), "I 1")
76+
self.assertEqual(pixel(ImageMath.eval("max(A, B)", images)), "I 2")
77+
self.assertEqual(pixel(ImageMath.eval("A == 1", images)), "I 1")
7878
self.assertEqual(pixel(ImageMath.eval("A == 2", images)), "I 0")
7979

8080
def test_one_image_larger(self):
81-
self.assertEqual(pixel(ImageMath.eval("A+B", A=A2, B=B)), "I 768")
82-
self.assertEqual(pixel(ImageMath.eval("A+B", A=A, B=B2)), "I 768")
81+
self.assertEqual(pixel(ImageMath.eval("A+B", A=A2, B=B)), "I 3")
82+
self.assertEqual(pixel(ImageMath.eval("A+B", A=A, B=B2)), "I 3")
8383

8484
def test_abs(self):
85-
self.assertEqual(pixel(ImageMath.eval("abs(A)", A=A)), "I 256")
86-
self.assertEqual(pixel(ImageMath.eval("abs(B)", B=B)), "I 512")
85+
self.assertEqual(pixel(ImageMath.eval("abs(A)", A=A)), "I 1")
86+
self.assertEqual(pixel(ImageMath.eval("abs(B)", B=B)), "I 2")
8787

8888
def test_binary_mod(self):
8989
self.assertEqual(pixel(ImageMath.eval("A%A", A=A)), "I 0")
9090
self.assertEqual(pixel(ImageMath.eval("B%B", B=B)), "I 0")
91-
self.assertEqual(pixel(ImageMath.eval("A%B", A=A, B=B)), "I 256")
91+
self.assertEqual(pixel(ImageMath.eval("A%B", A=A, B=B)), "I 1")
9292
self.assertEqual(pixel(ImageMath.eval("B%A", A=A, B=B)), "I 0")
9393
self.assertEqual(pixel(ImageMath.eval("Z%A", A=A, Z=Z)), "I 0")
9494
self.assertEqual(pixel(ImageMath.eval("Z%B", B=B, Z=Z)), "I 0")
9595

9696
def test_bitwise_invert(self):
9797
self.assertEqual(pixel(ImageMath.eval("~Z", Z=Z)), "I -1")
98-
self.assertEqual(pixel(ImageMath.eval("~A", A=A)), "I -257")
99-
self.assertEqual(pixel(ImageMath.eval("~B", B=B)), "I -513")
98+
self.assertEqual(pixel(ImageMath.eval("~A", A=A)), "I -2")
99+
self.assertEqual(pixel(ImageMath.eval("~B", B=B)), "I -3")
100100

101101
def test_bitwise_and(self):
102102
self.assertEqual(pixel(ImageMath.eval("Z&Z", A=A, Z=Z)), "I 0")
103103
self.assertEqual(pixel(ImageMath.eval("Z&A", A=A, Z=Z)), "I 0")
104104
self.assertEqual(pixel(ImageMath.eval("A&Z", A=A, Z=Z)), "I 0")
105-
self.assertEqual(pixel(ImageMath.eval("A&A", A=A, Z=Z)), "I 256")
105+
self.assertEqual(pixel(ImageMath.eval("A&A", A=A, Z=Z)), "I 1")
106106

107107
def test_bitwise_or(self):
108108
self.assertEqual(pixel(ImageMath.eval("Z|Z", A=A, Z=Z)), "I 0")
109-
self.assertEqual(pixel(ImageMath.eval("Z|A", A=A, Z=Z)), "I 256")
110-
self.assertEqual(pixel(ImageMath.eval("A|Z", A=A, Z=Z)), "I 256")
111-
self.assertEqual(pixel(ImageMath.eval("A|A", A=A, Z=Z)), "I 256")
109+
self.assertEqual(pixel(ImageMath.eval("Z|A", A=A, Z=Z)), "I 1")
110+
self.assertEqual(pixel(ImageMath.eval("A|Z", A=A, Z=Z)), "I 1")
111+
self.assertEqual(pixel(ImageMath.eval("A|A", A=A, Z=Z)), "I 1")
112112

113113
def test_bitwise_xor(self):
114114
self.assertEqual(pixel(ImageMath.eval("Z^Z", A=A, Z=Z)), "I 0")
115-
self.assertEqual(pixel(ImageMath.eval("Z^A", A=A, Z=Z)), "I 256")
116-
self.assertEqual(pixel(ImageMath.eval("A^Z", A=A, Z=Z)), "I 256")
115+
self.assertEqual(pixel(ImageMath.eval("Z^A", A=A, Z=Z)), "I 1")
116+
self.assertEqual(pixel(ImageMath.eval("A^Z", A=A, Z=Z)), "I 1")
117117
self.assertEqual(pixel(ImageMath.eval("A^A", A=A, Z=Z)), "I 0")
118118

119119
def test_bitwise_leftshift(self):
120120
self.assertEqual(pixel(ImageMath.eval("Z<<0", Z=Z)), "I 0")
121121
self.assertEqual(pixel(ImageMath.eval("Z<<1", Z=Z)), "I 0")
122-
self.assertEqual(pixel(ImageMath.eval("A<<0", A=A)), "I 256")
123-
self.assertEqual(pixel(ImageMath.eval("A<<1", A=A)), "I 512")
122+
self.assertEqual(pixel(ImageMath.eval("A<<0", A=A)), "I 1")
123+
self.assertEqual(pixel(ImageMath.eval("A<<1", A=A)), "I 2")
124124

125125
def test_bitwise_rightshift(self):
126126
self.assertEqual(pixel(ImageMath.eval("Z>>0", Z=Z)), "I 0")
127127
self.assertEqual(pixel(ImageMath.eval("Z>>1", Z=Z)), "I 0")
128-
self.assertEqual(pixel(ImageMath.eval("A>>0", A=A)), "I 256")
129-
self.assertEqual(pixel(ImageMath.eval("A>>1", A=A)), "I 128")
128+
self.assertEqual(pixel(ImageMath.eval("A>>0", A=A)), "I 1")
129+
self.assertEqual(pixel(ImageMath.eval("A>>1", A=A)), "I 0")
130130

131131
def test_logical_eq(self):
132132
self.assertEqual(pixel(ImageMath.eval("A==A", A=A)), "I 1")

Tests/test_mode_i16.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,6 @@ def verify(self, im1):
1717
xy = x, y
1818
p1 = pix1[xy]
1919
p2 = pix2[xy]
20-
if im1.mode[0] != "I" and im2.mode[0] == "I":
21-
p2 //= 256
2220
self.assertEqual(
2321
p1, p2,
2422
("got %r from mode %s at %s, expected %r" %

docs/handbook/concepts.rst

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,9 @@ Modes
2525
-----
2626

2727
The ``mode`` of an image defines the type and depth of a pixel in the image.
28-
A 1-bit pixel has a range of 0-1, an 8-bit pixel or a 32-bit floating point
29-
pixel has a range of 0-255, and a 32-bit signed integer has a range of 0-65535.
30-
These modes are supported:
28+
Each pixel uses the full range of the bit depth. So a 1-bit pixel has a range
29+
of 0-1, an 8-bit pixel has a range of 0-255 and so on. The current release
30+
supports the following standard modes:
3131

3232
* ``1`` (1-bit pixels, black and white, stored with one pixel per byte)
3333
* ``L`` (8-bit pixels, black and white)

0 commit comments

Comments
 (0)