2016-05-30 5 views
0

Beim Versuch, ein Bild über die Bildladefunktion von Pygames zu laden, erscheint oben im geladenen Bild ein schwarzer Balken. Beim Schneiden der Kacheln wurde deutlich, dass dieser Balken den Inhalt um 1 Pixel versetzte.Pygame lädt Bilder mit RGB-Werten Offset 1px, aber keine Alpha-Werte

Der Versuch, verschiedene Dateiformate (gif, png, alpha, nicht-alpha usw.) zu verwenden, hat ähnliche Auswirkungen auf den Offset, obwohl png alles außer alpha bei Verwendung von convert_alpha offset.

Example of the offest, and random colours when split into tiles und die the tileset image being used.

Selbst eine einfache blit des gesamten Bildes hat das gleiche Problem vorhanden:

import pygame 
import pygame.locals 

pygame.init() 
screen = pygame.display.set_mode((128, 128)) 
screen.fill((255,255,255)) 

screen.blit(pygame.image.load("src/tiles.gif"), (16,16)) 
pygame.display.flip() 

ich auch convert() und convert_alpha(), beide mit ähnlicher Wirkung versucht haben, verwenden.

Schätzen Sie jede Hilfe. Ich verwende Pygame 1.9.1 in Python 3.5 unter OS X 10.11.

Edit: Ich habe es sowohl auf Retina und Non-Retina-Displays getestet, und es ist das gleiche auf beiden. Bei Verwendung von Alpha werden nur die rgb-Werte um 1px nach unten verschoben, während das Alpha unverändert bleibt.

Antwort

0

Try Bild alpha zu setzen:

pygame.image.load("src/tiles.gif"), (16,16)).convert_alpha() 
+0

Ich benutze convert_alpha() immer aber, was es eigentlich ist, tun können Sie ein wenig erklären? – ihsancemil

+1

@ihsancemil convert() wird verwendet, um die pygame.Surface in das gleiche Pixelformat wie das für die endgültige Anzeige zu konvertieren, convert_alpha() ist für Bilder, die transparente Pixel haben –

+0

Leider habe ich das gerade gemacht Konvertieren(). Beides hat den gleichen Effekt. –