これは簡単なことですが、苦労しています。 私は "ゼロ"と呼ばれる透明な中心を持つ長方形のpng画像を持っています。私は画像の可視部分の色を変更したい。それを変更しようとすると、私は "zero.fill"を使用しようとしましたが、私は不透明部分だけを変更しようとするか、古い色と新しい色をマージしてそのようにしています。 完成したプログラムを持っていない友達にnumpyをインストールしたいと思っています。あらゆる簡単な提案を歓迎します。Pygameの画像の透明度を変更せずに色を変更するにはどうすればいいですか?
答えて
私は半透明のピクセルアルファサーフェスで動作する例があります。 fill
関数は、サーフェスのピクセルをループして新しい色に設定しますが、アルファ値は保持します。おそらく多くのサーフェスを持つフレームごとにこれを行うことはお勧めできません。 (プレスF、G、Hは色を変更する。)
import sys
import pygame as pg
def fill(surface, color):
"""Fill all pixels of the surface with color, preserve transparency."""
w, h = surface.get_size()
r, g, b, _ = color
for x in range(w):
for y in range(h):
a = surface.get_at((x, y))[3]
surface.set_at((x, y), pg.Color(r, g, b, a))
def main():
screen = pg.display.set_mode((640, 480))
clock = pg.time.Clock()
# Uncomment this for a non-translucent surface.
# surface = pg.Surface((100, 150), pg.SRCALPHA)
# pg.draw.circle(surface, pg.Color(40, 240, 120), (50, 50), 50)
surface = pg.image.load('bullet2.png').convert_alpha()
surface = pg.transform.rotozoom(surface, 0, 2)
done = False
while not done:
for event in pg.event.get():
if event.type == pg.QUIT:
done = True
if event.type == pg.KEYDOWN:
if event.key == pg.K_f:
fill(surface, pg.Color(240, 200, 40))
if event.key == pg.K_g:
fill(surface, pg.Color(250, 10, 40))
if event.key == pg.K_h:
fill(surface, pg.Color(40, 240, 120))
screen.fill(pg.Color('lightskyblue4'))
pg.draw.rect(screen, pg.Color(40, 50, 50), (210, 210, 50, 90))
screen.blit(surface, (200, 200))
pg.display.flip()
clock.tick(30)
if __name__ == '__main__':
pg.init()
main()
pg.quit()
sys.exit()
答えに半透明の画像を追加しました。その効果をよりよく見ることができます。色のみが変更されますが、透明度は変わりません。 – skrx
skrxに感謝します。これは、複雑な画像やテーマの画像ではより便利です。 –
私がskrxの方法を必要とするのはずっと前です。はるかに柔軟性があります。再度、感謝します。 :-) –
このバージョンでは、可視光透明部品ははAnkurの提案の通り、元の質問に他の方法で円形です。 はここで不可欠な作業コードです:
import pygame, sys
from pygame.locals import *
pygame.init()
def load_image(name):
image = pygame.image.load(name).convert()
return image
def resize(obj, w, h):
global scale
return pygame.transform.scale(obj, (int(w * scale), int(h * scale)))
pink = (255, 0, 160)
red = (255, 0, 0)
peach = (255, 118, 95)
blue = (0, 0, 255)
blue_1 = (38, 0, 160)
dark_yellow = (255, 174, 0)
green = (38, 137, 0)
orange = (255, 81, 0)
colour = [pink, red, peach, blue, blue_1, dark_yellow, green, orange, green]
clock = pygame.time.Clock()
scale = 4
screen = pygame.display.set_mode((292 * scale, 240 * scale),0, 32)
banner = load_image("banner.png") #292x35
zero = load_image("zero.png") #5x7
c = 0
while True:
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit()
rgb = colour[c]
c = c + 1
if c > 7:
c = 0
pygame.draw.line(banner, rgb, (53, 21), (53, 27), 5) #line the same size as zero image
banner.blit(zero, (51, 21)) #blit image with transparency over line
large_banner = resize(banner, 292, 35)
screen.blit(large_banner, (0, 0))
clock.tick(120)
pygame.display.flip()
pygame.quit()
sys.exit()
ああ、ちょうどその下の矩形(またはこの場合は線)の色を変更し、上の透明部分でイメージを拡大します。これはあなたのために働くのは良いことですが、これは実際に質問に答えません。 – skrx
- 1. div内の画像の不透明度を変更する一方、不透明度を変更せずにその下のテキストの色を変更します
- 2. 背景画像の不透明度を変更するにはどうすればよいですか?
- 3. 背景色の不透明度を変更するにはどうすればよいですか?
- 4. 画像の色を変更せずに画像のサイズを変更するにはどうすればよいですか?
- 5. テキストの不透明度を変更せずにフォームウィンドウの不透明度を変更する方法
- 6. コンテンツの不透明度を変更せずに背景の不透明度を変更する
- 7. 変更Bloggerの背景透明度は今すぐ画像ない透明
- 8. png画像の不透明度/アルファベット/透明度を変更する
- 9. CSSで背景画像の不透明度を変更する
- 10. ビットマップの黒の背景色を透明に変更するにはどうすればよいですか?
- 11. 画像を使わずに背景色の不透明度を連続的に変更する
- 12. 背景の不透明度を変更するにはどうすればいいですか?
- 13. 背景画像の不透明度を変更する
- 14. 画像の不透明度を変更する
- 15. 背景画像の不透明度を変更する
- 16. JavaScriptキャンバス - 画像の不透明度を変更する
- 17. QOpenglWidget透明度の変更に関する黒い画面
- 18. スクロール時にStackNavigatorヘッダーの不透明度を変更するにはどうすればよいですか?
- 19. Highchartsでシリーズの不透明度を変更するにはどうすればよいですか?
- 20. Three.jsシーンでJSONモデルの透明度を変更するにはどうすればよいですか?
- 21. ホバーでテキストの不透明度を変更するにはどうすればよいですか?
- 22. 日付型プレースホルダテキストの不透明度を変更するにはどうすればよいですか?
- 23. keypressでpygameのテキストの色を変更するにはどうすればいいですか?
- 24. pygameで線を引いて色を変更するにはどうすればいいですか?
- 25. jqueryで.animate()の後で背景画像の不透明度を変更するにはどうすればいいですか?
- 26. スクロールするすべての画像の色を変更するにはどうすればよいですか?
- 27. ボタンの透明度を変更せずにボタンを無効にする
- 28. 不透明度を変更すると画像の位置が壊れます
- 29. Androidのギャラリーから画像ボタンの画像を変更するにはどうすればいいですか?
- 30. Cの色の透明度を変更する方法
場所に必要な色と同じ大きさの長方形の上に画像.. –
私はそれを試みたが、いずれかの透明性が動作しないか、それが下に黒の背景に通過します色のついた矩形の画像 –
コード内の色を変更する必要がありますか?そうでない場合は、イメージソフトウェアで他のイメージを作成し、ある条件に基づいてコード内で交互に使用することができます。 – The4thIceman