cImage是一个第三方的图片处理库,通过它可以对图片进行处理。本文使用它来对彩色图片实现做旧效果,让彩色照片变成有年代感的泛黄的旧照片。在这个过程中,我们将学习循环嵌套和二维数组的概念。
图片处理的基本步骤:
导入库:首先,我们导入image库,它包含了处理图片所需的工具。
import image
加载图片:接着,我们加载一张图片,例如“lionking.png”。
img = image.Image("lionking.png")
创建窗口:我们创建一个图像窗口,用于显示图片。
win = image.ImageWin(img.getWidth(), img.getHeight())
img.draw(win)
循环嵌套与二维数组
现在,我们来到了处理图片的关键部分,使用循环嵌套和二维数组的概念。
二维数组:可以想象图片是由行(row)和列(col)组成的网格,每个格子就是一个像素点。这就像一个二维数组。
循环嵌套:为了访问并修改每个像素点,我们使用了两个循环:一个循环遍历所有的行,另一个循环遍历每行中的所有列。
for row in range(img.getHeight()):
for col in range(img.getWidth()):
p = img.getPixel(col, row)
# 以下是修改像素点的代码...
转换为老式照片的算法
每个像素点有红(R)、绿(G)、蓝(B)三种颜色的值。我们通过把这些值改成更低,从而使图片看起来像老式照片。newred = (R * 0.393 + G * 0.769 + B * 0.189)
newgreen = (R * 0.349 + G * 0.686 + B * 0.168)
newblue = (R * 0.272 + G * 0.534 + B * 0.131)
newpixel = image.Pixel(newred, newgreen, newblue)
img.setPixel(col, row, newpixel)
这个过程就是在遍历图片的每个像素,并使用上述公式调整其颜色值。
查看结果和结束
最后,我们再次把图片画在窗口上查看结果,并设置点击窗口后退出。img.draw(win)
win.exitonclick()
可以通过这个链接直接在好学好教少儿编程教学平台上运行这个有趣的程序。通过这个项目,我们不仅学习了如何用Python处理图片,还理解了循环嵌套和二维数组的重要概念。现在,尝试一下吧,看看你能把哪些图片转换成有趣的老式风格!🖼️🎨🐾
(题图为运行的程序正在处理图片)。