自己看了下python,本来想照教程上一点一点学的,学了一会发现好没劲(教程本身质量很好),学python就是为了好玩,为什么还这么按部就班勒?果断google下python的爬虫(开始目的是这个),按照一很简单的demo,自己也写了个很简单的小程序(urllib2+re),爬美女吧的美女图片。其实爬图片本身并不难(一会儿就爬了一千都张),难的是图片质量参差不齐,怎么加以区别。质量包括图片本身的分辨率和图片的‘美感’,于是突然就想到了图像识别,把那些不美(搞笑图片和长的不美)的去掉,而且说干就干,虽然也是小白

  google下python图片操作,了解到PIL(python Image Lib),去官网下。windows版官方只有32位版,如果是64位的python好像还不兼容。。。我用的mac,下的源码。装之前还要装依赖,教程可以参考这里。中间遇到了‘include <X11/Xlib.h>’,可以参考这里。而且win版好像的show函数好像有问题,得改源码。。。反正各种问题,毕竟这么老了,感觉官方也放弃了,不过够用就行了

  PIL装好之后, 就可以开工了。当然啦,图像识别也不可能是一步到位的事,毕竟不是那么简单嘛

  首先就是对图片处理有个简单的概念。一张图片是由若干像素组成,而一个像素则由很多分量(通道)组成,每种分量大小的共同作用于一个像素,而成千上万个像素则组成了宏观上的图片,分量数和每个分量的位数共同决定了图片的位数。比如一张分辨率为1920*1080的美女图片,每一行就有1920个像素,每一列有1080个像素,那么总共就有1920X1080个像素。而一个像素最常见的是由R(red),G(green),B(blue)分量(通道)组成。而每一个分量一般用8位bit来表示,所以每一个分量就有2^8 = 256(0~255)种可能。分量数为3,每个分量有8位,图片就为3X8=24位。而有一种32位的图就是在24位的上加上一个alpha(透明度)分量,比如png格式的图片就可以表示一张背景透明的图。现在我们可以计算下,一张这样24位,1920*1080分辨率的图片的大小了。1920X1080*24 ~ 6MB,可是我们一般遇到的图片都不会有这么大,那是压缩之后的结果,jpeg就是一种压缩率可以很高的图片格式,而且是有损压缩(据说损失的都不重要)。

  有了图片的基础知识之后,接下来就可以开始了。图片的处理也就是将某些指定的像素设为特定的值而已了

  下面举个小demo:

  预期效果:对称效果,让图片的左边与右边对称,可以恶搞别人

  示例代码:

  

import PIL from Imagedef mirror(im):width,height = im.sizehalf = int(width/2)for x in range(half):for y in range(height):origin = im.getpixel((width-x-1,y))im.putpixel((x,y),origin)return imimageurl = './images/xg.jpg'
image = Image.open(imageurl)
image.show()
image = mirror(image)
image.show()

  效果:

          

  在来一张上下的

  

转载于:https://www.cnblogs.com/ThrEcho/p/4957790.html

PIL简单图片处理(上)相关推荐

  1. 基于cropper和sweetalert的简单图片/头像裁剪上传

    基本功能 前端基本样式: 进行图片裁剪及上传: 点击上传后,js会将截取到的数据转为图片数据利用ajax发送给后台进行存储.存储成功后,刷新前端页面,头像改变. 上传成功后:自动刷新网页,更改头像 基 ...

  2. 续《用最简单的例子实现jQuery图片即时上传》之多图上传实现

    本用例主要含两个文件(index.html.submit_form_process.php),一个文件夹(files/).特别的,files中含一个报错图片error.jpg,jquery库引用了外链 ...

  3. python通过pil为png图片填充上背景颜色的代码

    将内容过程经常用到的一些内容珍藏起来,如下资料是关于python通过pil为png图片填充上背景颜色的内容,应该对码农也有用. x,y = im.size try: # (alpha band as ...

  4. html5封装图片,简单封装前端上传文件/图片

    前言 最近项目会一直用到各种类型的上传文件的功能, 所以就基于elment-ui简单的做了一个封装, 比较好用 正文 引入 import TestUpload from '../components/ ...

  5. tornado完成一个简单的登录界面/图片的上传

    # 对程序中可能经常变化的值应该提取到配置文件中 # 创建文件夹在文件夹下创建file,充当配置文件 from tornado.httpserver import HTTPServer from to ...

  6. Java别在使用普通的照片上传了,你可以使用开源的minio实现图片的上传,方便又简单

    目录 前沿 minio介绍 使用步骤 1.下载minio文件 2.创建文件夹并上传minio文件 3.操作如下指令 ​编辑 4.访问 5.创建存储桶 6.设置 ​编辑 7.测试图片上传 8.Java程 ...

  7. 【SpringBoot】简单的文件上传和文件下载以及图片回显

    介绍 这里是小编成长之路的历程,也是小编的学习之路.希望和各位大佬们一起成长! 以下为小编最喜欢的两句话: 要有最朴素的生活和最遥远的梦想,即使明天天寒地冻,山高水远,路远马亡. 一个人为什么要努力? ...

  8. python简单图片识别_用Python进行简单的图片识别(1)

    起因是这样的,我想买一个定焦镜头,但也不是必需品,可以长期观望购买.最初的想法是,写个程序,每天爬一下各大电商网站的价格,或者直接爬etao把该镜头的价格记录下来,突然有一个惊爆的低价,就发邮件通知. ...

  9. python查看图片颜色统计_Python通过PIL获取图片主要颜色并和颜色库进行对比的方法...

    本文实例讲述了Python通过PIL获取图片主要颜色并和颜色库进行对比的方法.分享给大家供大家参考.具体分析如下: 这段代码主要用来从图片提取其主要颜色,类似Goolge和Baidu的图片搜索时可以指 ...

最新文章

  1. 综述:NLP中的深度学习优势
  2. 90后售楼人员的肺腑之言:再便宜你也不能买的房子(转)
  3. python+pywinauto之PC端自动化一
  4. DataGrid方法标注
  5. 数控加工编程计算机的配置,计算机辅助数控加工编程.ppt
  6. DBA查询命令积累——不断更新
  7. 专家观点:不断茁壮的音频生态系统中心(转)
  8. 文件没有后缀名,如何批量添加为.jpg
  9. Oracle PL/SQL游标的学习
  10. 推荐5款免费网盘,空间大不限速!
  11. 国外服务器直播网站,海外直播服务器搭建
  12. 程序员删库跑路案例之 —— 这家网站首页变图片
  13. hdu11601087
  14. html底部添加备案号,网站底部怎么放备案号 WordPress、CMS、discuz等常见程序添加方法...
  15. drcom 不耍流氓
  16. kde 崩溃,如何重启 kde plasma 5 桌面
  17. 使用trashcan恢复linux下误删的文件
  18. android glide圆形图片,Android Glide加载图片成圆形
  19. SpringBoot事务配置管理
  20. 周岁年龄计算 js版 实时年龄

热门文章

  1. 无法访问netflix服务_Choerodon 的微服务之路(三):服务注册与发现
  2. android活动开始,android – 点击谷歌地图标记infoWindow开始活动
  3. mysql数据库应用的权限层级_MySQL数据库的用户权限管理
  4. php的异常处理方式,php异常处理基本方法
  5. 安装JAVA8要登录_JDK8的安装及环境配置
  6. 一个机器周期 计算机_计算机科学组织| 机器周期
  7. bytevalue_Java Number byteValue()方法与示例
  8. Java FileDescriptor sync()方法与示例
  9. long类型20位示例_Java Long类lowerOneBit()方法与示例
  10. VisualStudio2019配置OpenCV