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 114 115 116 117 118 119 120 121
|
from PIL import Image, ImageFont, ImageDraw
font_posotion = 20,20 color = 255,0,0,255 font = ImageFont.truetype('Arial.ttf', size=25, encoding="unic") thumbnail_size = 400,400 row_count = 3
def create_thumbnail(src_file): size = thumbnail_size im = Image.open(src_file)
im.thumbnail(size, Image.ANTIALIAS) return im
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
class MyTranspose(object): FLIP_LEFT_RIGHT = "FLIP_LEFT_RIGHT" FLIP_TOP_BOTTOM = "FLIP_TOP_BOTTOM" ROTATE_90 = "ROTATE_90" ROTATE_180 = "ROTATE_180" ROTATE_270 = "ROTATE_270" TRANSPOSE = "TRANSPOSE"
TransposeList = [FLIP_LEFT_RIGHT,FLIP_TOP_BOTTOM,ROTATE_90,ROTATE_180,ROTATE_270,TRANSPOSE] ImageTransposeList = [Image.FLIP_LEFT_RIGHT,Image.FLIP_TOP_BOTTOM,Image.ROTATE_90, Image.ROTATE_180,Image.ROTATE_270,Image.TRANSPOSE]
class MySplit(object): R = "R" G = "G" B = "B"
SplitList = [R, G, B]
def create_transpose(src_file): count = 0 pic_size = get_pic_size(thumbnail_size, len(MyTranspose.TransposeList), row_count) image = Image.new("RGBA", pic_size, "white") thumbnail_im = create_thumbnail(src_file) for i in range(0, len(MyTranspose.TransposeList)): img = thumbnail_im.copy() CONTOURimg = img.transpose(MyTranspose.ImageTransposeList[i]) CONTOURdraw = ImageDraw.Draw(CONTOURimg) CONTOURdraw.text(font_posotion, MyTranspose.TransposeList[count], font=font, fill=color) image.paste(CONTOURimg, get_position(count)) count+=1 CONTOURimg = thumbnail_im.copy() CONTOURdraw = ImageDraw.Draw(CONTOURimg) CONTOURdraw.text(font_posotion, "ORIGINAL PIC", font=font, fill=color) image.paste(CONTOURimg, get_position(count)) image.save("transpose.jpg")
def create_blend(src_file): img = Image.open(src_file) copy_img = img.transpose(Image.FLIP_LEFT_RIGHT) res_img = Image.blend(img, copy_img, 0.5)
res_img.show()
def create_composite(src_file): count = 0 mask_name = ["R","G","B"] image = Image.new("RGBA", (1200,400), "white") thumbnail_im = create_thumbnail(src_file) for i in range(0, 3): print i copy_img = thumbnail_im.transpose(Image.FLIP_LEFT_RIGHT) res_img = Image.blend(thumbnail_im, copy_img, 0.5) my_split = res_img.split() im = Image.composite(thumbnail_im, res_img, my_split[i]) CONTOURdraw = ImageDraw.Draw(im) CONTOURdraw.text(font_posotion, "mask: %s" % mask_name[i], font=font, fill=color) image.paste(im, get_position(count)) count += 1 image.save("composite.jpg")
def create_split(src_file): count = 0 pic_size = get_pic_size(thumbnail_size, len(MySplit.SplitList), row_count) image = Image.new("RGBA", pic_size, "white") thumbnail_im = create_thumbnail(src_file) for i in range(0, len(MySplit.SplitList)): CONTOURimg = thumbnail_im.split()[i].copy() CONTOURdraw = ImageDraw.Draw(CONTOURimg) CONTOURdraw.text(font_posotion, MySplit.SplitList[count], font=font) image.paste(CONTOURimg, get_position(count)) count += 1
image.save("split.jpg")
if __name__ == '__main__': create_composite("res.jpg")
|