Page 1 sur 1

PNG récalcitrant ?

Publié : dim. 12/févr./2023 8:51
par PhM
Bonjour,

Je télécharge une petite image PNG (MC.png) sur un site qui, ensuite, apparait bien sur le disque.

Par contre, sa lecture est impossible ? Cela semble provenir du format png de cette image.

Comment remédier à cela ?

Voici le code de test :

Code : Tout sélectionner

UsePNGImageEncoder()

URL$ = "https://airportguide.com/images/flags/48x32/MC.png"

If OpenWindow(0, 0, 0, 128, 128, "FreeImage", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)

  If ReceiveHTTPFile(URL$, GetTemporaryDirectory() + "MC.png")
    
    If LoadImage(0, GetTemporaryDirectory() + "MC.png")   
      SaveImage(0, GetTemporaryDirectory() + "MC.png") 
      ImageGadget(0, 10, 10, 48, 32, ImageID(0)) ; Affichage
    EndIf
  EndIf
  
  Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf

Re: PNG récalcitrant ?

Publié : dim. 12/févr./2023 10:20
par Ollivier
Peut-être en remplaçant "En" par "De" en 1ère ligne : c'est un décodage que tu as besoin, pas un encodage. Je vois aussi SaveImage(), je comprends pas pourquoi.

Re: PNG récalcitrant ?

Publié : dim. 12/févr./2023 10:21
par Marc56
Bonjour,

Déjà ce n'est pas le bon plugin, il faut utiliser Decoder et pas Encoder

Code : Tout sélectionner

; UsePNGImageEncoder()
  UsePNGImageDecoder()
Ensuite, si tu ouvres le fichier chargé avec un autre programme, il dira que ce n'est pas un png, mais un .webp
IrfanView
---------------------------
Attention !
Le fichier: "[...]AppData\Local\Temp\MC.png" est un fichier WEBP avec une extension incorrecte !
Le renommer ?


:idea: Quand on utilise des If, penser à mettre des Else, sinon on ne sais pas ce qui n'a pas fonctionné.

Code : Tout sélectionner

; UsePNGImageEncoder()
UsePNGImageDecoder()

URL$ = "https://airportguide.com/images/flags/48x32/MC.png"

If OpenWindow(0, 0, 0, 128, 128, "FreeImage", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)   
    If ReceiveHTTPFile(URL$, GetTemporaryDirectory() + "MC.png")
        If LoadImage(0, GetTemporaryDirectory() + "MC.png")   
            SaveImage(0, GetTemporaryDirectory() + "MC.png") 
            ImageGadget(0, 10, 10, 48, 32, ImageID(0)) ; Affichage
        Else
            Debug "Can't load File in image"
        EndIf
    Else
        Debug "file not loaded"
    EndIf
    
    Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf

Re: PNG récalcitrant ?

Publié : dim. 12/févr./2023 10:34
par PhM
Effectivement, désolé pour l'erreur d'encoder...

Mais, est-il possible de lire un fichier .webp avec PB ou faut-il attendre un futur UseWEBImageDecoder()?

Re: PNG récalcitrant ?

Publié : dim. 12/févr./2023 10:49
par Marc56
Il y a quelques discussions sur le forum us, mais rien d'abouti je crois.
Sinon, il faut trouver d'autres ressources graphiques aux formats classiques ou convertir les .webp avec d'autres outils.

Re: PNG récalcitrant ?

Publié : dim. 12/févr./2023 10:54
par Mindphazer
Sinon tu peux télécharger tes images ailleurs, au format png, sur flagcdn.com
Comme par exemple ici (pour Monaco), remplace ton URL par celle-ci : https://flagcdn.com/w40/mc.png

Re: PNG récalcitrant ?

Publié : dim. 12/févr./2023 12:06
par PhM
Merci Mindphazer pour cette source !