1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113
|
from PIL import Image, ImageDraw, ImageFont, ImageFilter
font_posotion = 20,20 color = 255,0,0,255 font = ImageFont.truetype('Arial.ttf', size=25, encoding="unic") thumbnail_size = 400,400 row_count = 4
def create_thumbnail(src_file): size = thumbnail_size im = Image.open(src_file)
im.thumbnail(size, Image.ANTIALIAS) return im
class MyFilter(object): BLUR = "BLUR" CONTOUR = "CONTOUR" DETAIL = "DETAIL" EDGE_ENHANCE = "EDGE_ENHANCE" EDGE_ENHANCE_MORE = "EDGE_ENHANCE_MORE" EMBOSS = "EMBOSS" FIND_EDGES = "FIND_EDGES" SMOOTH = "SMOOTH" SMOOTH_MORE = "SMOOTH_MORE" SHARPEN = "SHARPEN"
FilterList = [BLUR, CONTOUR, DETAIL, EDGE_ENHANCE, EDGE_ENHANCE_MORE, EMBOSS, FIND_EDGES, SMOOTH, SMOOTH_MORE, SHARPEN]
ImageFilterList = [ImageFilter.BLUR, ImageFilter.CONTOUR, ImageFilter.DETAIL, ImageFilter.EDGE_ENHANCE, ImageFilter.EDGE_ENHANCE_MORE, ImageFilter.EMBOSS, ImageFilter.FIND_EDGES, ImageFilter.SMOOTH, ImageFilter.SMOOTH_MORE, ImageFilter.SHARPEN]
class MyMode(object): MODE1 = "1" L = "L" I = "I" F = "F" P = "P" RGB = "RGB" RGBX = "RGBX" RGBA = "RGBA" CMYK = "CMYK" YCbCr = "YCbCr" HSV = "HSV"
ModeList = [MODE1, L, I, F, P, RGB, RGBX, RGBA, CMYK, YCbCr, HSV]
def get_position(count):
width = thumbnail_size[0] pic_width = width*row_count position = (count * width)%pic_width, (count * width)/pic_width*width return position
def get_pic_size(thumbnail_size, pic_num, row_count): pic_width = thumbnail_size[0] * row_count extra_row = 1 if pic_num % row_count else 0 pic_height = (pic_num / row_count + extra_row) * thumbnail_size[1]
return pic_width, pic_height
def create_filter(src_file): count = 0 pic_size = get_pic_size(thumbnail_size, len(MyFilter.FilterList), row_count) image = Image.new("RGBA", pic_size, "white") thumbnail_im = create_thumbnail(src_file)
for i in range(0, len(MyFilter.FilterList)): CONTOURimg = thumbnail_im.copy() CONTOUR = CONTOURimg.filter(MyFilter.ImageFilterList[count]) CONTOURdraw = ImageDraw.Draw(CONTOUR) CONTOURdraw.text(font_posotion, MyFilter.FilterList[count], font=font, fill=color) image.paste(CONTOUR, get_position(count)) count += 1
image.show()
def create_mode(src_file): count = 0 pic_size = get_pic_size(thumbnail_size, len(MyMode.ModeList), row_count) image = Image.new("RGBA", pic_size, "white") thumbnail_im = create_thumbnail(src_file)
for i in range(0, len(MyMode.ModeList)): img = thumbnail_im.copy() CONTOURdraw = ImageDraw.Draw(img) CONTOURdraw.text(font_posotion, MyMode.ModeList[count], font=font, fill=color)
CONTOUR = img.convert(MyMode.ModeList[i])
image.paste(CONTOUR, get_position(count)) count += 1
image.show()
if __name__ == '__main__': create_mode("res.jpg") create_filter("res.jpg")
|