python - Python创建一个从url中提取图片然后调整为缩略图的函数
问题描述
所以我在尝试编写函数来改变图像大小并将其保存为缩略图时遇到了问题。我有如何找回之后丢失的图像。我知道枕头,但不能在课堂上使用任何帮助将不胜感激。
更新:到目前为止,我已经获得了调整图像大小并使其成为缩略图的代码。我要进行的下一部分是如果将其大小调整为 thumbnail2,则保存它,但如果它与 thumbnail1 保持相同,则保存它。到目前为止,这是我的代码,没有下一步。
import urllib
url ="https://upload.wikimedia.org/wikipedia/commons/4/47/PNG_transparency_demonstra ion_1.png"
src = "C:\Users\laramie\Pictures\PNG_transparency_demonstration_1.png"
connect = urllib.urlretrieve(url, src)
def scalePicture(src):
newWidth = getWidth(src)/2
newHeight = getHeight(src)/2
canvas = makeEmptyPicture(newWidth, newHeight)
for x in range(newWidth):
for y in range(newHeight):
setColor(getPixel(canvas, x,y), getColor(getPixel(src, x*2, y*2)))
return canvas
def thumbNail():
srcPic = makePicture(src)
destWidth = getWidth(srcPic) / 2
destHeight = getHeight(srcPic) / 2
destPic = makeEmptyPicture(destWidth, destHeight)
destPic = scalePicture(srcPic)
show(srcPic)
show(destPic)
thumbNail()
解决方案
您的代码中发生了很多奇怪的事情:
destPic = makeEmptyPicture(destWidth, destHeight)
destPic = scalePicture(srcPic)
这里的第一行不是必需的,因为destPic
立即被覆盖。
for x in range(newWidth):
for y in range(newHeight):
setColor(getPixel(canvas, x,y), getColor(getPixel(src, x*2, y*2)))
这是缩放图像的一种非常低效的方法,结果较差,除非比例因子是整数,即使这样也有更快更好的方法。
我建议您使用import PIL
(Python 图像库)并使用它来处理图像。像加载、保存、缩放或翻转图像这样的事情很容易完成。但是,如果你的 python 安装没有附带这个库,你可能需要安装它。
推荐阅读
- python - 通过位于不同服务器中的同一文件进行 Python 文件迭代,更改 5 个参数
- scala - 识别窗口上的列的重复值(Scala)
- multithreading - Web API 调用在响应之前等待另一个线程的处理
- python - 正则表达式在python中某个字符之前抓取单词
- angular - 角嵌套树看起来不像预期的那样
- python - 减少 pyomo 模型的内存需求
- aws-lambda - Amazon API Gateway 无法在 VPC 中调用 Lambda
- vue.js - 如何纠正,超出最大调用堆栈大小,vue-router?
- jquery - 将显示所有页面按钮添加到 JQuery 分页代码?
- zabbix - 不能在 Zabbix 4 中使用浮动信息类型