嘿我想剪掉图像中的黑色东西,以便只有没有黑色的图片然后程序应该保存新图像 但我不知道该怎么做:/ 我刚刚得到了如何显示图像:
import pygame
import os
pygame.init()
surface = pygame.display.set_mode((500,500))
asurf = pygame.image.load(os.path.join("shot.png"))
asurf = pygame.transform.scale(asurf, (500, 500))
surface.blit(asurf,(0,0))
pygame.display.flip()
答案 0 :(得分:1)
编辑:对不起,我的初步答案只与PyGame中的透明度有关,而不是与保存图像有关。
要进行像素修改,您可能需要使用其他库,例如PIL(Python Imaging Library)。
如果您想给PIL一个镜头,请参阅此主题:PIL Best Way To Replace Color?
如果您想坚持使用PyGame,那么您应该查看pygame.surfarray:http://www.pygame.org/docs/tut/surfarray/SurfarrayIntro.html
EDIT2:这是一个快速摘录:
import pygame
# initialize pygame
pygame.init()
pygame.display.set_mode((500, 500))
# load image
image_surf = pygame.image.load('test.png',).convert_alpha()
# load pixel information from surface
image_pixels = pygame.surfarray.pixels3d(image_surf)
# create a copy for pixel manipulation
new_surf = image_surf.copy()
# loop through every pixel
i = 0
for x in range(len(image_pixels)):
for y in range(len(image_pixels[0])):
if image_pixels[x][y][0] == 0 and image_pixels[x][y][1] == 0 and image_pixels[x][y][2] == 0:
# set transparency
new_surf.set_at((x, y), pygame.Color(0, 0, 0, 0))
# save image
pygame.image.save(new_surf, "out.png")
OLD ANSWER:如何在PyGame中实现透明度
您需要查找set_colorkey():http://www.pygame.org/docs/ref/surface.html#pygame.Surface.set_colorkey
如果您的图片已经是透明的,那么您只需要使用.convert_alpha()加载图片:
asurf = pygame.image.load(os.path.join("shot.png")).convert_alpha()
即使您的图像没有透明度,也最好调用.convert():
asurf = pygame.image.load(os.path.join("shot.png")).convert()
请参阅:(由于仅限2个链接限制而删除了链接)
答案 1 :(得分:0)
我知道枕头模块具有检查像素颜色的功能。 我看到有人像文件一样加载图像,循环显示像素并检查它是否是特定的颜色。
不幸的是,我现在找不到它。我在这里链接image color module in the pillow doc,我希望它会帮助你。