PIL
از PyLearn.com
فهرست مندرجات |
کتابخانه PIL : Python Image Library
PIL کتابخانه ایی قوی و پایه برای پردازش تصاویر با فرمت های متنوع هست که تحت دو لایسنس تجاری و آزاد منتشر شده است ، برای مثال در نسخه آزاد آن ماژول The ImageCrackCode موجود نیست .
در ادامه توابع این کتابخانه را مرورو می کنیم :
تابع open
import Image
im=Image.open("Image_Name")
برای خواندن تصویر از روی هارد دیسک .
مثال :
Py2.5:\> import Image
Py2.5:\> im=Image.open('c:/beach.jpg')
تابع save
im.save("Image_Name","Format")
برای ذخیره تصویر بروی هارد دیسک با فرمت های پشتیبانی شده . ( gif,jpeg,jpg,png,..)
مثال :
Py2.5:\> import Image
Py2.5:\> im=Image.open('c:/beach.jpg')
Py2.5:\> im.save('c:/beach.png')
تابع size
im.size
عرض و ارتفاع تصویر را در واحد پیکسل برمیگرداند. (بصورت tuple )
مثال :
Py2.5:\> import Image
Py2.5:\> im=Image.open('c:/beach.jpg')
Py2.5:\> im.size
(600, 451)
تابع format
im.format
فرمت فایل را برمی گرداند .
مثال :
Py2.5:\> import Image
Py2.5:\> im=Image.open('c:/beach.jpg')
Py2.5:\> im.format
'JPEG'
تابع mode
im.mode
مد عکس را برمیگرداند (RGB , CMYK , Luminance)
مثال :
Py2.5:\> import Image
Py2.5:\> im=Image.open('c:/beach.jpg')
Py2.5:\> im.mode
'RGB'
تابع show
im.show()
نمایش عکس با استفاده از نرم افزار پیش فرض ِ نمایش تصویردر سیستم عامل .
مثال :
Py2.5:\> import Image
Py2.5:\> im=Image.open('c:/beach.jpg')
Py2.5:\> im.show()
تابع thumbnail
im.thumbnail((x,y))
بصورت درجا سایز تصویر را به ابعادی کوچکتر از سایز خود تبدیل میکند . ابن کار را طبق فرمول زیر انجام می دهد :
if x > size[0]: y = max(y * size[0] / x, 1); x = size[0] if y > size[1]: x = max(x * size[1] / y, 1); y = size[1] size = x, y
مثال :
Py2.5:\> import Image
Py2.5:\> im=Image.open('c:/beach.jpg')
Py2.5:\> im.size
(600, 451)
Py2.5:\> im.thumbnail((400,300))
Py2.5:\> im.size
(400, 300)
Py2.5:\> im.save('c:/beach_thumbnail.png','PNG')
Py2.5:\> im.show()
خروجی :
تابع crop
im.crop(box)
crop برای برداشتن بخشی از نصویر طبق مختصات داده شده در box استفاده می شود . box : یک tuple چهار عضوی ست که بصورت (left, upper, right, lower)box= تعریف میشود .
مثال :
Py2.5:\> import Image
Py2.5:\> im=Image.open('c:/beach.jpg')
Py2.5:\> im_crop = im.crop((150,200,420,270))
Py2.5:\> im_crop.save('c:/beanch_crop.png','PNG')
Py2.5:\> im_crop.show()
خروجی :
تابع paste
im.paste(image , box=None , mask=None)
تصویر image را در مختصات box از تصویر im قرار میدهد . image و im میتوانن دو تصویر با مد متفاون باشند . سایز box میبایست با سایز image برابر باشد . paste باعث بسط سایز تصویر نمی شود . mask تصویر دیگری ست که بعنوان mask به کار میرود وبر حسب آن شفافیت (transparency) ، image را از سیاه مطلق (نشانه عدم نمایش ) تا سفید مطلق (نمایش کامل) تغییر می دهد .
مثال :
Py2.5:\> import Image
Py2.5:\> beach=Image.open('c:/beach.png')
Py2.5:\> butterfly=Image.open('c:/butterfly.png')
Py2.5:\> mask=Image.open('c:/mask.bmp')
Py2.5:\> box = (135,210,135+butterfly.size[0],210+butterfly.size[1])
Py2.5:\> box
(135, 210, 241, 290)
Py2.5:\> mask.size
(106, 80)
Py2.5:\> butterfly.size
(106, 80)
Py2.5:\> beach.paste(butterfly,box,mask)
Py2.5:\> beach.show()
Py2.5:\> beach.save('c:/butterfly_beach.jpeg','JPEG')
خروجی :
تابع split
im.split()
تصویر را بر مبنای band های آن جدا می کند . برای مثال در صورتیکه مد تصویر CYMK باشد ، چهار تصویر بر مبنای هر یک از آنها در یک tuple برمیگرداند .
مثال :
Py2.5:\> import Image
Py2.5:\> beach_thumbnail=Image.open('c:/beach_thumbnail.png')
Py2.5:\> beach_thumbnail.mode
'RGB'
Py2.5:\> rgb=beach_thumbnail.split()
Py2.5:\> rgb
(<Image.Image instance at 0x00DFB288>, <Image.Image instance at 0x00E2C170>,<Image.Image instance at 0x00E2C198>)
Py2.5:\> rgb[0].save('c:/beach_thumbnail_r_split.png')
Py2.5:\> rgb[1].save('c:/beach_thumbnail_g_split.png')
Py2.5:\> rgb[2].save('c:/beach_thumbnail_b_split.png')
خروجی :
تابع merge
merge(mode, bands)
مجموعه ایی از تصاویر با band های مجزا را بروی یک تصویر ادغام میکند .
مثال :
Py2.5:\> import Image
Py2.5:\> beach_thumbnail=Image.open('c:/beach_thumbnail.png')
Py2.5:\> bgr=beach_thumbnail.split()[2],beach_thumbnail.split()[1],beach_thumbnail.split()[0]
Py2.5:\> Image.merge("RGB",bgr).save('c:/beach_thumbnail_merge.png')
Py2.5:\> Image.merge("RGB",bgr).show()
خروجی :
تابع transpose
im.transpose(method)
تحت method داده شده تصویر را جابه جا می کند . method می تواند شامل موارد زیر باشد :
Image.ROTATE_90 Image.ROTATE_180 Image.ROTATE_270 Image.FLIP_LEFT_RIGHT Image.FLIP_TOP_BOTTOM
مثال :
Py2.5:\> beach_thumbnail.transpose(Image.FLIP_TOP_BOTTOM).save('c:/ beach_thumbnail_transpose.png')
Py2.5:\> beach_thumbnail.transpose(Image.FLIP_TOP_BOTTOM).show()
خروجی :
تابع resize
im.resize(size, resample=0)
تصویری با سایز جدید ایجاد کرده و بر میگرداند . size از نوع tuple و شامل عرض و ارتفاع ست .
مثال :
Py2.5:\> import Image
Py2.5:\> beach=Image.open('c:/beach.png')
Py2.5:\> beach.resize((200,200)).save('c:/beach_resize.png')
Py2.5:\> beach.resize((200,200)).show()
خروجی :
تابع rotate
im.rotate(angle, resample=0)
تصویر را در جهت عقربه های ساعت تحت زاویه angle می چرخاند و تصویر جدید را برمی گرداند.
مثال :
Py2.5:\> import Image
Py2.5:\> yoga=Image.open('c:/yoga.png')
Py2.5:\> yoga.rotate(180).save('c:/yoga_rotate.png')
Py2.5:\> yoga.rotate(180).show()
خروجی :
تابع convert
convert(mode=None, data=None, dither=None, palette=0, colors=256)
برای تبدیل مد تصویر به کار می رود . مد می تواند شامل RGB , CMYK , L , P باشد .
مثال :
Py2.5:\> import Image
Py2.5:\> beach_thumbnail=Image.open('c:/beach_thumbnail.png')
Py2.5:\> beach_thumbnail.convert('1').save('c:/beach_thumbnail.convert.png')
Py2.5:\> beach_thumbnail.convert('1').show()
خروجی :
تابع filter
import ImageFilter im.filter(filter)
فیلتری را بروی تصویر اعمال میکند و تصویر حاصله را برمیگرداند . فیلتر میتواند شامل یکی از متغیر های زیر باشد :
ImageFilter.BLUR ImageFilter.CONTOUR ImageFilter.DETAIL ImageFilter.EDGE_ENHANCE ImageFilter.EDGE_ENHANCE_MORE ImageFilter.EMBOSS ImageFilter.FIND_EDGES ImageFilter.MedianFilter ImageFilter.SHARPEN ImageFilter.SMOOTH ImageFilter.SMOOTH_MORE
مثال :
horse=Image.open('c:/horse.png')
horse.filter(ImageFilter.BLUR).save('c:/horse_filter_blur.png')
horse.filter(ImageFilter.CONTOUR).save('c:/horse_filter_contour.png')
horse.filter(ImageFilter.DETAIL).save('c:/horse_filter_detail.png')
horse.filter(ImageFilter.EDGE_ENHANCE).save('c:/horse_filter_edge_enhance.png')
horse.filter(ImageFilter.EDGE_ENHANCE_MORE).save('c:/horse_filter_edge_enhance_more.png')
horse.filter(ImageFilter.EMBOSS).save('c:/horse_filter_emboss.png')
horse.filter(ImageFilter.FIND_EDGES).save('c:/horse_filter_find_edges.png')
horse.filter(ImageFilter.MedianFilter).save('c:/horse_filter_medianfilter.png')
horse.filter(ImageFilter.SHARPEN).save('c:/horse_filter_sharpen.png')
horse.filter(ImageFilter.SMOOTH).save('c:/horse_filter_smooth.png')
horse.filter(ImageFilter.SMOOTH_MORE).save('c:/horse_filter_smooth_more.png')
خروجی :
تصویر خروجی ImageFilter.BLUR
تصویر خروجی ImageFilter.CONTOUR
تصویر خروجی ImageFilter.EDGE_ENHANCE
تصویر خروجی ImageFilter.EDGE_ENHANCE_MORE
تصویر خروجی ImageFilter.EMBOSS
تصویر خروجی ImageFilter.FIND_EDGES
تصویر خروجی ImageFilter.MedianFilter

