こんなのはどうですか?

リンク

相互リンク募集中!!
数式処理関連

画像ファイルを表示する

import Image im = Image.open(infile) im.show() # matplotlibでも表示可能 import pylab pylab.imshow(im)

画像ファイルの情報を表示する

import sys import Image for infile in sys.argv[1:]: try: im = Image.open(infile) print infile, im.format, "%dx%d" % im.size, im.mode except IOError: pass

JPEGファイルに変換する

import os, sys import Image for infile in sys.argv[1:]: f, e = os.path.splitext(infile) outfile = f + ".jpg" if infile != outfile: try: Image.open(infile).save(outfile) except IOError: print "cannot convert", infile

サムネイルを作成する

import os, sys import Image size = 128, 128 for infile in sys.argv[1:]: outfile = os.path.splitext(infile)[0] + ".thumbnail" if infile != outfile: try: im = Image.open(infile) im.thumbnail(size) im.save(outfile, "JPEG") except IOError: print "cannot create thumbnail for", infile

画像を切り出す

import Image im = Image.open(infile) box = (100, 100, 400, 400) region = im.crop(box)

画像を横にシフトさせる

import Image def roll(image, delta): "Roll an image sideways" xsize, ysize = image.size delta = delta % xsize if delta == 0: return image part1 = image.crop((0, 0, delta, ysize)) part2 = image.crop((delta, 0, xsize, ysize)) image.paste(part2, (0, 0, xsize-delta, ysize)) image.paste(part1, (xsize-delta, 0, xsize, ysize)) return image im = Image.open(infile) im.show() rim = roll(im, 30) rim.show()

色をRGB分解する。各色から、RGB結合する。

import Image im = Image.open(infile) im.show() r, g, b = im.split() r.show() im = Image.merge("RGB", (b, g, r)) im.show()

ピクセル毎に演算を施す

import Image im = Image.open(infile) im.show() out = im.point(lambda i: i * 1.2) out.show()

色相毎に処理を行う

import Image im = Image.open(infile) im.show() source = im.split() R, G, B = 0, 1, 2 mask = source[R].point(lambda i: i < 100 and 255) mask.show() out = source[G].point(lambda i: i * 0.7) out.show() source[G].paste(out, None, mask) source[G].show() im = Image.merge(im.mode, source) im.show()

画像を回転させる

from PIL import Image im = Image.open(infile) im.rotate(45).show()

画像を反転させる。ある画像に別の画像を貼り付ける

import Image im = Image.open(infile) im.show() box = (0, 0, 100, 200) region = im.crop(box) region.show() region = region.transpose(Image.ROTATE_180) region.show() im.paste(region, box) im.show()

画像の拡大・縮小・回転

import Image im = Image.open(infile) im.show() out = im.resize((128, 128)) out.show() out = im.rotate(45) # degrees counter-clockwise out.show()

垂直、水平反転、規定角度への回転

import Image im = Image.open(infile) im.show() out = im.transpose(Image.FLIP_LEFT_RIGHT) out.show() out = im.transpose(Image.FLIP_TOP_BOTTOM) out.show() out = im.transpose(Image.ROTATE_90) out.show() out = im.transpose(Image.ROTATE_180) out.show() out = im.transpose(Image.ROTATE_270) out.show()

画素値のフォーマット変換

import Image im = Image.open(infile).convert("L") im.show()

フィルタを掛ける

import Image import ImageFilter im = Image.open(infile) im.show() out = im.filter(ImageFilter.DETAIL) out.show()

画像にフィルタをかける

import ImageFilter import Image im = Image.open(infile) im.show() im1 = im.filter(ImageFilter.BLUR) im1.show() im2 = im.filter(ImageFilter.MinFilter(3)) im2.show() im3 = im.filter(ImageFilter.MinFilter) # same as MinFilter(3) im3.show()

画像強調

import Image im = Image.open(infile) im.show() import ImageEnhance enh = ImageEnhance.Contrast(im) enh.enhance(1.3).show("30% more contrast")

エッジ強調

import ImageEnhance import Image image = Image.open(infile) enhancer = ImageEnhance.Sharpness(image) for i in range(8): factor = i / 4.0 enhancer.enhance(factor).show("Sharpness %f" % factor)

アニメーションGIFファイルを処理する

import Image im = Image.open(giffile) im.show() im.seek(1) # 2フレーム目にジャンプ im.show() try: while 1: im.seek(im.tell()+1) im.show() # 各フレーム毎の処理をする except EOFError: pass

画像ファイルを開く

import Image fp = open(infile, "rb") im = Image.open(fp) im.show()

画像ファイルを読み出す

import ImageFile imoport Image fp = open(infile, "rb") p = ImageFile.Parser() while 1: s = fp.read(1024) if not s: break p.feed(s) im = p.close() im.show() #im.save("copy.jpg")

Tarファイルから、画像ファイルを開く

import TarIO import Image # ファイル名は適宜変更してください。 fp = TarIO.TarIO("Imaging.tar", "Imaging/test/lena.ppm") im = Image.open(fp)

画像に描画する

import Image, ImageDraw im = Image.open(infile) draw = ImageDraw.Draw(im) draw.line((0, 0) + im.size, fill=128) draw.line((0, im.size[1], im.size[0], 0), fill=128) del draw im.show()

画像にテキストを描画する

import ImageFont, ImageDraw import Image image = Image.open(infile) draw = ImageDraw.Draw(image) # use a truetype font font = ImageFont.truetype("arial.ttf", 15) draw.text((10, 25), "hello world", font=font) del draw del font image.show()

画像同士を演算する

import Image, ImageMath im1 = Image.open("image1.jpg") im1.show() im2 = Image.open("image2.jpg") im2.show() out = ImageMath.eval("convert(min(a, b), 'L')", a=im1, b=im2) out.show() #out.save("result.png")

パレットを設定する

import Image im = Image.open(infile) im.show() palette = [] for i in range(256): palette.extend((i, i, i)) # grayscale wedge assert len(palette) == 768 im.putpalette(palette) im.show()
inserted by FC2 system