There are several ways to open images:
- To open an image file
- To read a input stream (file-like object) that provides an image binary
- To read a binary string that contains image
- To copy an existing image object
- To open an empty image
All of these operations are provided by the constructor of
Open an image file¶
The most frequently used way is just to open an image by its filename.
Image‘s constructor can take the parameter named
from __future__ import print_function from wand.image import Image with Image(filename='pikachu.png') as img: print('width =', img.width) print('height =', img.height)
It must be passed by keyword argument exactly. Because the constructor has many parameters that are exclusive to each other.
There is a keyword argument named
file as well, but don’t confuse
filename takes a string of a filename,
file takes a input stream (file-like object).
Read a input stream¶
If an image to open cannot be located by a filename but can be read through
input stream interface (e.g. opened by
StringIO, read by
it can be read by
It takes all file-like objects which implements
from __future__ import print_function from urllib2 import urlopen from wand.image import Image response = urlopen('https://stylesha.re/minhee/29998/images/100x100') try: with Image(file=response) as img: print('format =', img.format) print('size =', img.size) finally: response.close()
Read a blob¶
from __future__ import print_function from wand.image import Image with open('pikachu.png') as f: image_binary = f.read() with Image(blob=image_binary) as img: print('width =', img.width) print('height =', img.height)
It is a way of the lowest level to read an image. There will probably not be many cases to use it.
Clone an image¶
If you have an image already and have to copy it for safe manipulation,
from wand.image import Image with Image(filename='pikachu.png') as original: with original.clone() as converted: converted.format = 'png' # operations on a converted image...
For some operations like format converting or cropping, there are safe methods
that return a new image of manipulated result like
convert() or slicing operator. So the above example
code can be replaced by:
from wand.image import Image with Image(filename='pikachu.png') as original: with original.convert('png') as converted: # operations on a converted image...
Hint file format¶
When it’s read from a binary string or a file object, you can explicitly
give the hint which indicates file format of an image to read — optional
format keyword is for that:
from wand.image import Image with Image(blob=image_binary, format='ico') as image: print(image.format)
New in version 0.2.1: The
format parameter to
Open an empty image¶
To open an empty image, you have to set its width and height:
from wand.image import Image with Image(width=200, height=100) as img: img.save(filename='200x100-transparent.png')
Its background color will be transparent by default. You can set
argument as well:
from wand.color import Color from wand.image import Image with Color('red') as bg: with Image(width=200, height=100, background=bg) as img: img.save(filename='200x100-red.png')
New in version 0.2.2: The
background parameters to