学习PIL模块笔记(二)

续上一节
11、getextrema 
im.getextrema() => 2-tuple
 Returns a 2-tuple containing the minimum and maximum values of the image. In the current version of PIL, this is only applicable to single-band images. 
 
12、getpixel 
im.getpixel(xy) => value or tuple

Returns the pixel at the given position. If the image is a multi-layer image, this method returns a tuple. 

    Note that this method is rather slow; if you need to process larger parts of an image from Python, you can either use pixel access objects (see load), or the getdata method. 
 
13、histogram 
im.histogram() => list 

Returns a histogram for the image. The histogram is returned as a list of pixel counts, one for each pixel value in the source image. If the image has more than one band, the histograms for all bands are concatenated (for example, the histogram for an "RGB" image contains 768 values). 

 A bilevel image (mode "1") is treated as a greyscale ("L") image by this method. 
 
im.histogram(mask) => list 

Returns a histogram for those parts of the image where the mask image is non-zero. The mask image must have the same size as the image, and be either a bi-level image (mode "1") or a greyscale image ("L"). 

 
14、load 
im.load() 

Allocates storage for the image and loads it from the file (or from the source, for lazy operations). In normal cases, you don't need to call this method, since the Image class automatically loads an opened image when it is accessed for the first time. 

 (New in 1.1.6) In 1.1.6 and later, load returns a pixel access object that can be used to read and modify pixels. The access object behaves like a 2-dimensional array, so you can do: 
 
pix = im.load() 
print pix[x, y] 
pix[x, y] = value 

Access via this object is a lot faster than getpixel and putpixel. 

 
15、offset 
im.offset(xoffset, yoffset) => image

(Deprecated) Returns a copy of the image where the data has been offset by the given distances. Data wraps around the edges. If yoffset is omitted, it is assumed to be equal to xoffset. 

 This method is deprecated. New code should use the offset function in the ImageChops module. 
 
16、paste 
im.paste(image, box) 

Pastes another image into this image. The box argument is either a 2-tuple giving the upper left corner, a 4-tuple defining the left, upper, right, and lower pixel coordinate, or None (same as (0, 0)). If a 4-tuple is given, the size of the pasted image must match the size of the region. 

 If the modes don't match, the pasted image is converted to the mode of this image (see the convert method for details). 
 
im.paste(colour, box)

Same as above, but fills the region with a single colour. The colour is given as a single numerical value for single-band images, and a tuple for multi-band images. 

 
im.paste(image, box, mask) 

Same as above, but updates only the regions indicated by the mask. You can use either "1", "L" or "RGBA" images (in the latter case, the alpha band is used as mask). Where the mask is 255, the given image is copied as is. Where the mask is 0, the current value is preserved. Intermediate values can be used for transparency effects. 

   Note that if you paste an "RGBA" image, the alpha band is ignored. You can work around this by using the same image as both source image and mask. 
 
im.paste(colour, box, mask) 

 Same as above, but fills the region indicated by the mask with a single colour. 

 
17、point 
im.point(table) => image 
im.point(function) => image 

Returns a copy of the image where each pixel has been mapped through the given table. The table should contains 256 values per band in the image. If a function is used instead, it should take a single argument. The function is called once for each possible pixel value, and the resulting table is applied to all bands of the image. 

 If the image has mode "I" (integer) or "F" (floating point), you must use a function, and it must have the following format: 
     argument * scale + offsetExample: 
     out = im.point(lambda i: i * 1.2 + 10)You can leave out either the scale or the offset. 
 im.point(table, mode) => image 
 im.point(function, mode) => image

Map the image through table, and convert it on fly. This can be used to convert "L" and "P" images to "1" in one step, e.g. to threshold an image. 

 (New in 1.1.5) This form can also be used to convert "L" images to "I" or "F", and to convert "I" images with 16-bit data to "L". In the last case, you must use a 65536-item lookup table. 
 
18、putalpha 
im.putalpha(band) 

Copies the given band to the alpha layer of the current image. 

 The image must be an "RGBA" image, and the band must be either "L" or "1". 
 (New in PIL 1.1.5) You can use putalpha on other modes as well; the image is converted in place, to a mode that matches the current mode but has an alpha layer (this usually means "LA" or "RGBA"). Also, the band argument can be either an image, or a colour value (an integer). 
 
19、putdata 
im.putdata(data) 
im.putdata(data, scale, offset) 

Copy pixel values from a sequence object into the image, starting at the upper left corner (0, 0). The scale and offset values are used to adjust the sequence values: 

     pixel = value * scale + offsetIf the scale is omitted, it defaults to 1.0. If the offset is omitted, it defaults to 0.0. 
 
20、putpalette 
im.putpalette(sequence)

 Attach a palette to a "P" or "L" image. The palette sequence should contain 768 integer values, where each group of three values represent the red, green, and blue values for the corresponding pixel index. Instead of an integer sequence, you can use an 8-bit string. 

 
21、putpixel 
im.putpixel(xy, colour)

Modifies the pixel at the given position. The colour is given as a single numerical value for single-band images, and a tuple for multi-band images. 

  Note that this method is relatively slow. If you're using 1.1.6, pixel access objects (see load) provide a faster way to modify the image. If you want to generate an entire image, it can be more efficient to create a Python list and use putdata to copy it to the image. For more extensive changes, use paste or the ImageDraw module instead. 
 You can speed putpixel up a bit by "inlining" the call to the internal putpixel implementation method: 
 
    im.load() 
    putpixel = im.im.putpixel 
    for i in range(n): 
       ... 
       putpixel((x, y), value) 

In 1.1.6, the above is better written as: 

    pix = im.load() 
    for i in range(n): 
        ... 
        pix[x, y] = value 

22、resize 

im.resize(size) => image 
im.resize(size, filter) => image

Returns a resized copy of an image. The size argument gives the requested size in pixels, as a 2-tuple: (width, height). 

 The filter argument can be one of NEAREST (use nearest neighbour), BILINEAR (linear interpolation in a 2x2 environment), BICUBIC (cubic spline interpolation in a 4x4 environment), or ANTIALIAS (a high-quality downsampling filter). If omitted, or if the image has mode "1" or "P", it is set to NEAREST. 
 
23、rotate 
im.rotate(angle) => image 
im.rotate(angle, filter=NEAREST, expand=0) => image

Returns a copy of an image rotated the given number of degrees counter clockwise around its centre. 

 The filter argument can be one of NEAREST (use nearest neighbour), BILINEAR (linear interpolation in a 2x2 environment), or BICUBIC (cubic spline interpolation in a 4x4 environment). If omitted, or if the image has mode "1" or "P", it is set to NEAREST. 
 The expand argument, if true, indicates that the output image should be made large enough to hold the rotated image. If omitted or false, the output image has the same size as the input image. 
 
24、save 
im.save(outfile, options...) 
im.save(outfile, format, options...)

Saves the image under the given filename. If format is omitted, the format is determined from the filename extension, if possible. This method returns None. 

 Keyword options can be used to provide additional instructions to the writer. If a writer doesn't recognise an option, it is silently ignored. The available options are described later in this handbook. 
 You can use a file object instead of a filename. In this case, you must always specify the format. The file object must implement the seek, tell, and write methods, and be opened in binary mode. 
  If the save fails, for some reason, the method will raise an exception (usually an IOError exception). If this happens, the method may have created the file, and may have written data to it. It's up to your application to remove incomplete files, if necessary. 
 
25、seek 
im.seek(frame) 

Seeks to the given frame in a sequence file. If you seek beyond the end of the sequence, the method raises an EOFError exception. When a sequence file is opened, the library automatically seeks to frame 0. 

 Note that in the current version of the library, most sequence formats only allows you to seek to the next frame. 
 
26、show 
im.show()

Displays an image. This method is mainly intended for debugging purposes. 

 On Unix platforms, this method saves the image to a temporary PPM file, and calls the xv utility. 
 On Windows, it saves the image to a temporary BMP file, and uses the standard BMP display utility to show it. 
 This method returns None. 
 
27、split 
im.split() => sequence

Returns a tuple of individual image bands from an image. For example, splitting an "RGB" image creates three new images each containing a copy of one of the original bands (red, green, blue). 

 
28、tell 
im.tell() => integer

Returns the current frame number. 

 
29、thumbnail 
im.thumbnail(size) 
im.thumbnail(size, filter) 

Modifies the image to contain a thumbnail version of itself, no larger than the given size. This method calculates an appropriate thumbnail size to preserve the aspect of the image, calls the draft method to configure the file reader (where applicable), and finally resizes the image. 

 The filter argument can be one of NEAREST, BILINEAR, BICUBIC, or ANTIALIAS (best quality). If omitted, it defaults to NEAREST. 
 Note that the bilinear and bicubic filters in the current version of PIL are not well-suited for thumbnail generation. You should use ANTIALIAS unless speed is much more important than quality. 
 Also note that this function modifies the Image object in place. If you need to use the full resolution image as well, apply this method to a copy of the original image. This method returns None. 
 
30、tobitmap 
im.tobitmap() => string

Returns the image converted to an X11 bitmap. 

 
31、tostring 
im.tostring() => string 

Returns a string containing pixel data, using the standard "raw" encoder.  

im.tostring(encoder, parameters) => string 

 

Returns a string containing pixel data, using the given data encoding. 

 
32、transform 
im.transform(size, method, data) => image 
im.transform(size, method, data, filter) => image 

Creates a new image with the given size, and the same mode as the original, and copies data to the new image using the given transform. 

 In the current version of PIL, the method argument can be EXTENT (cut out a rectangular subregion), AFFINE (affine transform), QUAD (map a quadrilateral to a rectangle), or MESH (map a number of source quadrilaterals in one operation). The various methods are described below. 
 The filter argument defines how to filter pixels from the source image. In the current version, it can be NEAREST (use nearest neighbour), BILINEAR (linear interpolation in a 2x2 environment), or BICUBIC (cubic spline interpolation in a 4x4 environment). If omitted, or if the image has mode "1" or "P", it is set to NEAREST. 
im.transform(size, EXTENT, data) => image 
im.transform(size, EXTENT, data, filter) => image 

Extracts a subregion from the image. 

 Data is a 4-tuple (x0, y0, x1, y1) which specifies two points in the input image's coordinate system. The resulting image will contain data sampled from between these two points, such that (x0, y0) in the input image will end up at (0,0) in the output image, and (x1, y1) at size. 
 This method can be used to crop, stretch, shrink, or mirror an arbitrary rectangle in the current image. It is slightly slower than crop, but about as fast as a corresponding resize operation. 
im.transform(size, AFFINE, data) => image 
im.transform(size, AFFINE, data, filter) => image 

Applies an affine transform to the image, and places the result in a new image with the given size. 

 Data is a 6-tuple (a, b, c, d, e, f) which contain the first two rows from an affine transform matrix. For each pixel (x, y) in the output image, the new value is taken from a position (a x + b y + c, d x + e y + f) in the input image, rounded to nearest pixel. 
 This function can be used to scale, translate, rotate, and shear the original image. 
im.transform(size, QUAD, data) => image 
im.transform(size, QUAD, data, filter) => image

Maps a quadrilateral (a region defined by four corners) from the image to a rectangle with the given size. 

 Data is an 8-tuple (x0, y0, x1, y1, x2, y2, y3, y3) which contain the upper left, lower left, lower right, and upper right corner of the source quadrilateral. 
im.transform(size, MESH, data) image => image 
im.transform(size, MESH, data, filter) image => image 

Similar to QUAD, but data is a list of target rectangles and corresponding source quadrilaterals. 

 33、transpose 
im.transpose(method) => image 

Returns a flipped or rotated copy of an image. 

 Method can be one of the following: FLIP_LEFT_RIGHT, FLIP_TOP_BOTTOM, ROTATE_90, ROTATE_180, or ROTATE_270. 
 
34、verify 
im.verify() 

Attempts to determine if the file is broken, without actually decoding the image data. If this method finds any problems, it raises suitable exceptions. This method only works on a newly opened image; if the image has already been loaded, the result is undefined. Also, if you need to load the image after using this method, you must reopen the image file. 

 
属性
Instances of the Image class have the following attributes: 
 
1、format 
im.format => string or None

The file format of the source file. For images created by the library, this attribute is set to None. 

 
2、mode 
im.mode => string 

Image mode. This is a string specifying the pixel format used by the image. Typical values are "1", "L", "RGB", or "CMYK." 

 
3、size 
im.size => (width, height) 

Image size, in pixels. The size is given as a 2-tuple (width, height). 

 
4、palette 
im.palette => palette or None 

Colour palette table, if any. If mode is "P", this should be an instance of the ImagePalette class. Otherwise, it should be set to None. 

 
5、info 
im.info => dictionary

A dictionary holding data associated with the image.

posted @ 2015-10-07 19:56  jeffkuang  阅读(261)  评论(0)    收藏  举报