Topic: trasparenza immmagine  (Letto 887 volte)

0 Utenti e 1 Visitatore stanno visualizzando questo topic.

Offline rafery

  • python unicellularis
  • *
  • Post: 2
  • Punti reputazione: 0
    • Mostra profilo
trasparenza immmagine
« il: Giugno 30, 2018, 14:37 »
ciao a tutti, ho bisogno di un aiuto essendo un vero noobie, ho trovato su un tutorial come caricare un immagine contenente più animazioni per poi dividerla nei frame dell'animazione stessa, invece di caricare 5 o 6 file diversi, la parte di codice interessata è questa:

my_ship_all = pygame.image.load("my_ship.png")
img_size = my_ship_all.get_size()
horiz_cell = 6
vert_cell = 2
larg_cell = 63
altz_cell = 47
my_ship_list = []

for y in range (0, img_size[1], altz_cell):
        for x in range (0, img_size[0], larg_cell):
            surface = pygame.Surface((larg_cell, altz_cell))
            surface.blit(my_ship_all, (0,0), (x, y, larg_cell, altz_cell))
            my_ship_list.append(surface)

il programma prende un immagine la divide in più "pezzi" e la salva in my_ship_list[]
ora il problema, se carico l'immagine completa la trasparenza è trasparente, come dovrebbe essere, dopo il "trattamento" la trasparenza diventa nera.
qualcuno può aiutarmi, grazie in anticipo.

Offline RicPol

  • python sapiens sapiens
  • ******
  • Post: 3.154
  • Punti reputazione: 9
    • Mostra profilo
Re:trasparenza immmagine
« Risposta #1 il: Giugno 30, 2018, 19:13 »
Per prima cosa, quando scrivi codice python nei post, usa il pulsante apposito per formattarlo, in modo da renderlo più leggibile.

A una rapida occhiata, sembra che il tuo tutorial non prenda in considerazione la trasparenza dell'immagine, e quindi copiare il codice non basta, bisogna adattarlo. Senza conoscere pygame, sempre a una rapida occhiata, mi sembra probabile che blittare semplicemente un'immagine è un po' brutale come metodo. Probabilmente dovresti provare ad aggiungere qualche flag per preservare l'informazione della trasparenza, seguendo la documentazione https://www.pygame.org/docs/ref/surface.html#pygame.Surface.blit. Ma forse c'è proprio un metodo diverso da seguire, non saprei.

In generale, ti conviene imparare pygame per gradi, invece di copiare codice dai "tutorial" cosiddetti: per esempio, prima prova a blittare un'immagine semplice su una superficie. Poi passa a blittare un'immagine con trasparenza. Poi arriverai piano piano a separare le immagini, e tutto quello che vuoi fare. Se non procedi per gradi poi ti sarà difficile, quando sbagli, capire qual è il punto esatto dove hai sbagliato.

Offline rafery

  • python unicellularis
  • *
  • Post: 2
  • Punti reputazione: 0
    • Mostra profilo
Re:trasparenza immmagine
« Risposta #2 il: Giugno 30, 2018, 23:05 »
grazie dei consigli, molto gentile