我遇到了一个问题。
我想用我的字典调色板将许多灰度图像转换为
RGBA
,其中greyScale value = (r,g,b)
(添加透明度0
,其中像素为0
)。
我写了一些代码,但需要
~0.3sec
才能结束一次转换。
有没有更快的方法来获得更好的性能?
谢谢<3
性能取决于您的图像分辨率。但你可以像这样使用 Numpy 来处理这种情况。
import numpy as np
from PIL import Image
def grayscale_to_rgba_optimized(image, palette):
"""Converts a grayscale image to RGBA using a dictionary palette efficiently.
Args:
image: A 2D grayscale image array.
palette: A dictionary mapping grayscale values to RGBA tuples.
Returns:
A 3D RGBA image array.
"""
lookup_array = np.array([palette.get(i, (0, 0, 0, 0)) for i in range(256)])
rgba_image = lookup_array[image]
return rgba_image
colors = {
-35: (243, 243, 243),
-30: (207, 207, 207),
......
90: (77, 77, 77)
}
gray_img = Image.open('Your_Image_Path.png').convert('L')
gray_array = np.array(gray_img)
rgba_image = grayscale_to_rgba_optimized(gray_array, colors)
# Save the result as a PNG image (transparency will be preserved)
result_image = Image.fromarray(rgba_image, 'RGBA')
result_image.save("output_image.png")