首页 > 解决方案 > 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()

标签: python

解决方案


您的代码中发生了很多奇怪的事情:

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 安装没有附带这个库,你可能需要安装它。


推荐阅读