Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
simple = get_remote_file("images/simple.fits")
multi = get_remote_file("images/multi.fits")
compressed = get_remote_file("images/compressed.fits.fz")
# One image
im = imageio.imread(simple)
ims = imageio.mimread(simple)
assert (im == ims[0]).all()
assert len(ims) == 1
# Multiple images
ims = imageio.mimread(multi)
assert len(ims) == 3
R = imageio.read(multi)
assert R.format.name == "FITS"
ims = list(R) # == [im for im in R]
assert len(ims) == 3
# Fail
raises = pytest.raises
raises(IndexError, R.get_data, -1)
raises(IndexError, R.get_data, 3)
raises(RuntimeError, R.get_meta_data, None) # no meta data support
raises(RuntimeError, R.get_meta_data, 0) # no meta data support
# Compressed image
im = imageio.imread(compressed)
assert im.shape == (2042, 3054)
# Get meta data
R = imageio.read(fname1, "ffmpeg", loop=True)
meta = R.get_meta_data()
assert len(R) == 280
assert isinstance(meta, dict)
assert "fps" in meta
R.close()
# Test size argument
im = imageio.read(fname1, "ffmpeg", size=(50, 50)).get_data(0)
assert im.shape == (50, 50, 3)
im = imageio.read(fname1, "ffmpeg", size="40x40").get_data(0)
assert im.shape == (40, 40, 3)
raises(ValueError, imageio.read, fname1, "ffmpeg", size=20)
raises(ValueError, imageio.read, fname1, "ffmpeg", pixelformat=20)
# Read all frames and test length
R = imageio.read(get_remote_file("images/realshort.mp4"), "ffmpeg")
count = 0
while True:
try:
R.get_next_data()
except IndexError:
break
else:
count += 1
assert count == R.count_frames()
assert count in (35, 36) # allow one frame off size that we know
raises(IndexError, R.get_data, -1) # Test index error -1
# Now read beyond (simulate broken file)
assert_close(im1, im2, 1.1)
# We can also store grayscale
fname = fnamebase + ".animated.%i.gif" % 1
imageio.mimsave(fname, [x[:, :, 0] for x in ims], duration=0.2)
imageio.mimsave(fname, [x[:, :, :1] for x in ims], duration=0.2)
# Irragular duration. You probably want to check this manually (I did)
duration = [0.1 for i in ims]
for i in [2, 5, 7]:
duration[i] = 0.5
imageio.mimsave(fnamebase + ".animated_irr.gif", ims, duration=duration)
# Other parameters
imageio.mimsave(fnamebase + ".animated.loop2.gif", ims, loop=2, fps=20)
R = imageio.read(fnamebase + ".animated.loop2.gif")
W = imageio.save(fnamebase + ".animated.palettes100.gif", palettesize=100)
assert W._writer.opt_palette_size == 128
# Fail
assert raises(IndexError, R.get_meta_data, -1)
assert raises(ValueError, imageio.mimsave, fname, ims, palettesize=300)
assert raises(ValueError, imageio.mimsave, fname, ims, quantizer="foo")
assert raises(ValueError, imageio.mimsave, fname, ims, duration="foo")
# Add one duplicate image to ims to touch subractangle with not change
ims.append(ims[-1])
# Test subrectangles
imageio.mimsave(fnamebase + ".subno.gif", ims, subrectangles=False)
imageio.mimsave(fnamebase + ".subyes.gif", ims, subrectangles=True)
s1 = os.stat(fnamebase + ".subno.gif").st_size
s2 = os.stat(fnamebase + ".subyes.gif").st_size
assert len(R) == n # we ask for one, but get an honest number
assert isinstance(R.get_meta_data(), dict)
assert isinstance(R.get_meta_data(0), dict)
# Test mvolread()
R = imageio.read(fname, "DICOM", "V")
assert len(R) == n
assert isinstance(R.get_meta_data(), dict)
assert isinstance(R.get_meta_data(0), dict)
# Touch DicomSeries objects
assert repr(R._series[0])
assert R._series[0].description
assert len(R._series[0].sampling) == 3
R = imageio.read(fname, "DICOM", "?")
raises(RuntimeError, R.get_length)
fname1 = get_remote_file("images/cockatoo.mp4", test_dir)
fname3 = fname1[:-4] + ".stub.mp4"
# Get meta data
R = imageio.read(fname1, "ffmpeg", loop=True)
meta = R.get_meta_data()
assert len(R) == 280
assert isinstance(meta, dict)
assert "fps" in meta
R.close()
# Test size argument
im = imageio.read(fname1, "ffmpeg", size=(50, 50)).get_data(0)
assert im.shape == (50, 50, 3)
im = imageio.read(fname1, "ffmpeg", size="40x40").get_data(0)
assert im.shape == (40, 40, 3)
raises(ValueError, imageio.read, fname1, "ffmpeg", size=20)
raises(ValueError, imageio.read, fname1, "ffmpeg", pixelformat=20)
# Read all frames and test length
R = imageio.read(get_remote_file("images/realshort.mp4"), "ffmpeg")
count = 0
while True:
try:
R.get_next_data()
except IndexError:
break
else:
count += 1
assert count == R.count_frames()
assert count in (35, 36) # allow one frame off size that we know
def test_reading_saving():
need_internet()
fname1 = get_remote_file("images/stent.swf", test_dir)
fname2 = fname1[:-4] + ".out.swf"
fname3 = fname1[:-4] + ".compressed.swf"
fname4 = fname1[:-4] + ".out2.swf"
# Read
R = imageio.read(fname1)
assert len(R) == 10
assert R.get_meta_data() == {} # always empty dict
ims1 = []
for im in R:
assert im.shape == (657, 451, 4)
assert mean(im) > 0
ims1.append(im)
# Seek
assert (R.get_data(3) == ims1[3]).all()
# Fails
raises(IndexError, R.get_data, -1) # No negative index
raises(IndexError, R.get_data, 10) # Out of bounds
R.close()
# Test loop
R = imageio.read(fname1, loop=True)
assert img.shape == (5368, 7728)
assert round(img[24, 48], 15) == 0.738025415444770
assert round(img[3692, 86], 15) == 0.132942326490714
assert round(img[258, 1658], 15) == 0.687194525904203
assert round(img[1349, 6765], 15) == 0.113391984359726
assert round(img[210, 6761], 15) == 0.162267839687195
assert round(img[5231, 6459], 15) == 0.784946236559140
assert round(img[5213, 7477], 15) == 0.095796676441838
assert round(img[2745, 3789], 15) == 0.760508308895406
assert round(img[1428, 4192], 15) == 0.621700879765396
# Test extracted metadata against extracted metadata from .txt file
assert img._meta == meta_gt
# Test fail
test_reader = imageio.read(raw_file, "lytro-illum-raw")
raises(IndexError, test_reader.get_data, -1)
raises(IndexError, test_reader.get_data, 3)
assert raises(ValueError, imageio.mimsave, fname, ims, quantizer="foo")
assert raises(ValueError, imageio.mimsave, fname, ims, duration="foo")
# Add one duplicate image to ims to touch subractangle with not change
ims.append(ims[-1])
# Test subrectangles
imageio.mimsave(fnamebase + ".subno.gif", ims, subrectangles=False)
imageio.mimsave(fnamebase + ".subyes.gif", ims, subrectangles=True)
s1 = os.stat(fnamebase + ".subno.gif").st_size
s2 = os.stat(fnamebase + ".subyes.gif").st_size
assert s2 < s1
# Meta (dummy, because always {})
imageio.mimsave(fname, [x[:, :, 0] for x in ims], duration=0.2)
assert isinstance(imageio.read(fname).get_meta_data(), dict)
assert len(R) == 10
assert R.get_meta_data() == {} # always empty dict
ims1 = []
for im in R:
assert im.shape == (657, 451, 4)
assert mean(im) > 0
ims1.append(im)
# Seek
assert (R.get_data(3) == ims1[3]).all()
# Fails
raises(IndexError, R.get_data, -1) # No negative index
raises(IndexError, R.get_data, 10) # Out of bounds
R.close()
# Test loop
R = imageio.read(fname1, loop=True)
assert (R.get_data(10) == ims1[0]).all()
# setting meta data is ignored
W = imageio.save(fname2)
W.set_meta_data({"foo": 3})
W.close()
# Write and re-read, now without loop, and with html page
imageio.mimsave(fname2, ims1, loop=False, html=True)
ims2 = imageio.mimread(fname2)
# Check images. We can expect exact match, since
# SWF is lossless.
assert len(ims1) == len(ims2)
for im1, im2 in zip(ims1, ims2):
assert (im1 == im2).all()
def show_in_console():
reader = imageio.read("imageio:cockatoo.mp4", "ffmpeg")
# reader = imageio.read('')
im = reader.get_next_data()
while True:
im = reader.get_next_data()
print(
"frame min/max/mean: %1.1f / %1.1f / %1.1f"
% (im.min(), im.max(), (im.sum() / im.size))
)