首页 > 解决方案 > Image.fromarray 输出高度和宽度相反的镜像图像

问题描述

用示例 PNG 图像中的颜色替换灰度像素值之后。我正在尝试从渐变图像中获取颜色并将它们应用于灰度图像,目前,代码输出这个正确的图像以供比较,源图像渐变。代码如下:

# -*- coding: utf-8 -*-
import os, numpy, PIL
from PIL import Image

# Access all PNG files in directory
allfiles=os.listdir(os.getcwd())
imlistmaster=[filename for filename in allfiles if  filename[-4:] in [".png",".PNG"]]
imlistGradient=[filename for filename  in imlistmaster if "grad" in filename]
imlistSample=[filename for filename in imlistmaster if "Sample" in filename]

# Get dimensions of images
w1,h1=Image.open(imlistSample[0]).size
N1=len(imlistSample)
w2,h2=Image.open(imlistGradient[0]).size
N2=len(imlistGradient)

arr1=numpy.zeros((w1,h1,4),numpy.uint8)

#Create array based on gradient
for im in imlistGradient:
    imarr2=numpy.array(Image.open(im),dtype=numpy.uint8)
    pix2=Image.open(im).load()

# Convert grayscale to RGB values based on gradient
for im in imlistSample:
    filename1 = os.path.basename(imlistSample[0])
    pix1=Image.open(im).load()
    for x in range(w1):
        for y in range (h1):
            color=pix1[x, y]
            color=list(color)
            colorvalue=color[0]
            newcolor=pix2[10,colorvalue]
            pix1[x,y]=newcolor
            arr1[x,y]=newcolor
    out=Image.fromarray(arr1,mode="RGB")
    out.save("testimage.png")

据我所知,错误发生在最后的输出步骤,因为检查变量资源管理器显示 w1、h1、x、y 的正确值以及从 (arr1) 生成图像的数组。在这种情况下,为什么我会得到一个高度和宽度颠倒的镜像?

标签: pythonpython-imaging-library

解决方案


推荐阅读