python 图片转灰度

Posted on Posted in python
  1. #!/usr/bin/env python  
  2. #-*- coding:utf-8 -*-  
  3. """ 
  4. pip install Image 
  5. """  
  6.   
  7. import PIL.Image as Image # 其实这里有点奇怪  
  8. color = 'MNHQ$OC?7>!:-;.'  
  9. def to_html(func):  
  10.     html_head = ''' 
  11.             <html> 
  12.               <head> 
  13.                 <style type="text/css"> 
  14.                   body {font-family:Monospace; font-size:3px;} 
  15.                 </style> 
  16.               </head> 
  17.             <body> '''  
  18.     html_tail = '</body></html>'  
  19.     def wrapper(img):  
  20.         pic_str = func(img)  
  21.         pic_str = ''.join(l + ' <br/>' for l in pic_str.splitlines())  
  22.         return html_head + pic_str + html_tail  
  23.     return wrapper  
  24. @to_html  
  25. def make_char_img(img):  
  26.     pix = img.load()  
  27.     pic_str = ''  
  28.     width, height = img.size  
  29.     for h in xrange(height):  
  30.         for w in xrange(width):  
  31.             pic_str += color[int(pix[w, h]) * 14 / 255]  
  32.         pic_str += '\n'  
  33.     return pic_str  
  34. def preprocess(img_name):  
  35.     img = Image.open(img_name)  
  36.     # 获取原图片狂傲  
  37.     w, h = img.size  
  38.     # 取大值  
  39.     m = max(img.size)  
  40.     delta = m / 200.0  
  41.     w, h = int(w / delta), int(h / delta)  
  42.     img = img.resize((w, h))  
  43.     # 模式从rgb转L,灰度图像  
  44.     img = img.convert('L')  
  45.     return img  
  46. def save_to_file(filename, pic_str):  
  47.     outfile = open(filename, 'w')  
  48.     outfile.write(pic_str)  
  49.     outfile.close()  
  50. def main():  
  51.     img = preprocess('123.jpg')  
  52.     pic_str = make_char_img(img)  
  53.     save_to_file('lx.html', pic_str)  
  54. if __name__ == '__main__':  
  55.     main()   
» 转载请注明来源:呢喃 » python 图片转灰度

Leave a Reply

Your email address will not be published. Required fields are marked *

ten − 10 =