当前位置:首页 » 编程语言 » pythoncrop

pythoncrop

发布时间: 2025-10-15 17:59:02

‘壹’ ❤️【python从入门到精通】(二十七)更进一步的了解Pillow吧!

本文是接上一篇 ❤️【Python从入门到精通】(二十六)用Python的PIL库(Pillow)处理图像真的得心应手❤️ 进一步介绍Pillow库的使用, 本文将重点介绍一些高级特性:比如如何利用Pillow画图形(圆形,正方形),介绍通过Pillow库给图片添加水印;同时对上一篇文章未介绍的常用知识点进行补充说明。希望对读者朋友们有所帮助。

上一篇文章已经介绍了Image模块,但是介绍的还不够全面,例如如何从网页中读取图片没有介绍到,如何裁剪图片都没有介绍到。

读取网页中的图片的基本实现方式是:首先利用requests库读取当前图片链接的内容,接着将内容转成二进制数据,在通过open方法将该二进制数据,最后通过save方法进行保存。

读取结果是:

通过crop方法可以从图片中裁剪出一个指定大小的区域。裁取的区域范围是 (left, upper, right, lower) 比如从某个宽高都是400的图片中裁剪一个是宽高都是100的正方形区域,只需要指定裁剪区域的坐标是: (0, 0, 100, 100)

有裁剪还有一个方法就是重新设置图片大小的方法 resize,比如将前面400 400的图片 修改成 300 200,只需要调用resize方法

通过 convert方法进行图片模式的转换

前面介绍的ImageDraw库,只是介绍了利用它来向图片写入文本,其实ImageDraw模块还有一个更有用的途径,就是可以通过它来画各种图形。

首先创建一个600*600的画布。然后再画布中画出一个正方形,画直线的方法是 line方法。
ImageDraw.line(xy, fill=None, width=0, joint=None)

在xy的坐标之间画一条直线
xy--> 在两个坐标点之间画一条直线,坐标点的传入方式是[(x, y), (x, y), ...]或者[x, y, x, y, ...]
fill--> 直线的颜色
width--> 直线的宽度

画一个边框宽度为2px,颜色为蓝色的,面积为400*400的正方形。

ImageDraw.arc(xy, start, end, fill=None, width=0)

在给定的区域范围内,从开始角到结束角之间绘制一条圆弧
xy--> 定义边界框的两个点,传入的格式是[ (x0, y0), (x1, y1)] 或者 [x0, y0, x1, y1] ,其中 x1>=x0,y1>=y0
start --> 起始角度,以度为单位,从3点钟开始顺时针增加
end--> 结束角度,以度为单位
fill--> 弧线的颜色
width-->弧线的宽度

这里就是画了一个半圆,如果结束角度是360度的话则就会画一个完整的圆。

画圆通过ImageDraw.ellipse(xy, fill=None, outline=None, width=1) 方法,该方法可以画出一个给定范围的圆

xy--> 定义边界框的两个点,传入的格式是[ (x0, y0), (x1, y1)] 或者 [x0, y0, x1, y1] ,其中 x1>=x0,y1>=y0
outline--> 轮廓的颜色
fill ---> 填充颜色
width--> 轮廓的宽度

ImageDraw.chord(xy, start, end, fill=None, outline=None, width=1) 方法用来画半圆,跟arc()方法不同的是它会用直线将起始点和结束点连接起来

xy--> 定义边界框的两个点,传入的格式是[ (x0, y0), (x1, y1)] 或者 [x0, y0, x1, y1] ,其中 x1>=x0,y1>=y0
outline--> 轮廓的颜色
fill ---> 填充颜色
width--> 轮廓的宽度

ImageDraw.pieslice(xy, start, end, fill=None, outline=None, width=1)
类似于arc()方法,不过他会在端点和圆点之间画直线
xy--> 定义边界框的两个点,传入的格式是[ (x0, y0), (x1, y1)] 或者 [x0, y0, x1, y1] ,其中 x1>=x0,y1>=y0
start --> 起始角度,以度为单位,从3点钟开始顺时针增加
end--> 结束角度,以度为单位
fill--> 弧线的颜色
width-->弧线的宽度

ImageDraw.rectangle(xy, fill=None, outline=None, width=1)
xy--> 在两个坐标点之间画一条直线,坐标点的传入方式是[(x, y), (x, y), ...]或者[x, y, x, y, ...]
outline--> 轮廓的颜色
fill--> 填充的颜色
width--> 轮廓线的宽度

ImageDraw.rounded_rectangle(xy, radius=0, fill=None, outline=None, width=1) 该方法可以画一个圆角矩形
xy--> 在两个坐标点之间画一条直线,坐标点的传入方式是[(x, y), (x, y), ...]或者[x, y, x, y, ...]
radius--> 角的半径
outline--> 轮廓的颜色
fill--> 填充的颜色
width--> 轮廓线的宽度

这里有个问题,就是画好的图形如何从Image中扣出来呢?

ImageEnhance模块主要是用于设置图片的颜色对比度亮度锐度等啥的,增强图像。

原始图像

ImageFilter模块主要用于对图像进行过滤,增强边缘,模糊处理,该模块的使用方式是 im.filter(ImageFilter) 。
其中ImageFilter按照需求传入指定的过滤值。

下面一个个试下效果

4.边缘增强

ImageGrab模块主要用于对屏幕进行截图,通过grab方法进行截取,如果不传入任何参数则表示全屏幕截图,否则是截取指定区域的图像。其中box格式是:(x1,x2,y1,y2)

利用Pillow库可以轻易的对图像增加水印
首先,用PIL的Image函数读取图片
接着,新建一张图(尺寸和原图一样)
然后,在新建的图象上用PIL的ImageDraw把字给画上去,字的颜色从原图处获取。

原图

添加文字后的效果图

本文详细介绍了Pillow库的使用,希望对读者朋友们有所帮助。

Pillow官方文档

需要获取源码的小伙伴可以关注下方的公众号,回复【python】

‘贰’ 10分钟学会python写游戏脚本!Python其实很简单


在探索游戏乐趣的同时,你是否曾想过用Python编写游戏脚本,提升游戏体验?今天,让我们一起走进Python的世界,用短短10分钟,解锁编程驱动公主连结游戏的秘籍。你会发现,Python其实并不复杂,只需要一点基础和巧妙的运用。


踏上编程之旅

  • 设备准备: 拥有一个安卓模拟器或真机,确保已安装ADB并将其路径添加至环境变量中。

  • Python库: 选用Python 3.7及以上版本,还需Pillow、pytesseract和opencv-python等库。

  • 可选工具: 对于高级操作,uiautomator2是个不错的选择,但本文暂不涉及。


ADB操作实战

  1. 连接设备: 启动模拟器,进入shell环境(adb devices, adb shell, exit)

  2. 命令大揭秘: 利用adb的screencap抓取屏幕截图,adb pull用于传输文件,adb_shell_input执行文本输入,清除输入框输入历史(adb_shell_input keyevent 67)。

  3. 点击屏幕: 通过adb_click(center, offset)实现精确点击操作。

  4. 输入文字: 通过adb_shell_input(text)实现文本输入。


要快速定位应用信息,使用以下ADB命令:



  1. 查询当前活动:adb shell mpsys activity activities

  2. 强制停止应用:adb shell am force-stop [应用包名]

  3. 启动应用或活动:adb shell am start -W -n [应用包名]/[Activity名]


图像处理与识别

利用Python的图像处理能力,cv2.matchTemplate搜索模板位置,PIL库则用于裁剪图片至特定区域。如需快速裁剪并识别,记得保持图片分辨率一致,使用QQ截屏,然后通过pytesseract的OCR功能识别内容:



  1. cv2.matchTemplate(screen, template, cv2.TM_CCOEFF_NORMED)

  2. crop_screenshot(img_file, pos_x, pos_y, width, height, out_file)


识别结果可能包含空格和换行,稍作处理即可。



以上就是Python编写游戏脚本的基础步骤,尽管看起来简洁,但实际操作中可能需要根据游戏界面的具体情况灵活调整。Python以其强大的库和简洁的语法,为游戏爱好者提供了无限可能。现在,就让我们在公主连结的冒险旅程中,用代码书写属于你的精彩故事吧!

热点内容
php中gt 发布:2025-10-15 20:22:50 浏览:761
得安pci加密卡 发布:2025-10-15 19:56:40 浏览:62
四川服务器ip地址 发布:2025-10-15 19:56:21 浏览:986
sql导出数据库命令 发布:2025-10-15 19:48:27 浏览:622
vsftp外网访问 发布:2025-10-15 19:19:14 浏览:983
python读取txt矩阵 发布:2025-10-15 18:57:41 浏览:141
android图片异步下载 发布:2025-10-15 18:50:19 浏览:755
虎牙直播要什么配置 发布:2025-10-15 18:25:14 浏览:32
iphone已隐藏图片如何设置密码 发布:2025-10-15 18:20:52 浏览:297
mfc打开文件夹对话框 发布:2025-10-15 18:13:49 浏览:993