[OK] Probleme de sauvegarde d'images [SaveImage()]

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

[OK] Probleme de sauvegarde d'images [SaveImage()]

Message par Ar-S »

Salut,

Je ne comprends pas, j'ai créé une liste d'images et une liste parallele du nom renommé de ces même images.
Au debug les 2 noms apparaissent bien. Mais lorsque je veux sauver l'image c:\1.jpg en c:\min_1.jpg,
le debug me dit que l'#image (en l'occurance la 4) n'est pas initialisée.
Je n'arrive pas à voir pourquoi.

Voilà le code :

Code : Tout sélectionner

;- imaginons que images() contienne c:\1.jpg et c:\2.jpg
; SavImage() contient c:\min_1.jpg et c:\min_2.jpg

extSortie$=".jpg"
ResetList(images()) : ResetList(SavImage())
              While NextElement(images())
                NumNew=SelectElement(SavImage(), ListIndex(images())) 
                Debug "image a traiter : "+images()
                If LoadImage(4, images())
                  Debug "Image chargée : "+images()
                  Limg=ImageWidth(4):Himg=ImageHeight(4)
                  ResizeImage(4,L,H,#PB_Image_Smooth)
                  
                  ;Nom du futur fichier image
                  extSortie$="."+LCase(FormatImage$)
                  NomNew$=Left(SavImage(),Len(SavImage())-4)+extSortie$
                  Debug "Nom de sortie : "+NomNew$
                  
                  ;Sauvegarde
                  If extSortie$=".jpeg" Or extSortie$=".jpg"
                    SaveImage(4,NomNew$,#PB_ImagePlugin_JPEG,taux)
                  Else
                    Debug "ça chie"
                  EndIf

                Else
                  MessageRequester(" ","IMPOSSIBLE DE CHARGER L'IMAGE ")
                EndIf
                
              Wend
J'ai fait un code à part et autonome pour que vous puissiez tester en live,
mais le problème est que lui fonctionne...
J'ai du zapper un truc dans le code original que je n'arrive pas à repérer.

Code fonctionnel :

Code : Tout sélectionner

UseJPEGImageEncoder()
UseJPEGImageDecoder()

NewList ImgSrc.s()
NewList ImgSAV.s()

Global rep$=GetCurrentDirectory()

;Création de 3 images
  For i=1 To 3
    CreateImage(1,100,100,32)
    StartDrawing(ImageOutput(1))
      DrawText(5,25,"IMAGE "+Str(i))
    StopDrawing()
    SaveImage(1,rep$+"image"+Str(i)+".jpg",#PB_ImagePlugin_JPEG,7)
  Next i  
 
; Chargement des images et création des 2 listes
For i=1 To 3
  charge=LoadImage(2,rep$+"image"+Str(i)+".jpg")  
  If charge
    AddElement(ImgSrc())
    ImgSrc()=rep$+"image"+Str(i)+".jpg"
    AddElement(ImgSAV())
    ImgSAV()=rep$+"min_image"+Str(i)+".jpg"
  EndIf
Next i

; Repositionnement des listes avant le 1er element
ResetList(ImgSrc()) : ResetList(ImgSAV())

; traitement, chargement et sauvegarde des nouveaux fichiers
While NextElement(ImgSrc())
  NumNew=SelectElement(ImgSAV(), ListIndex(ImgSrc())) 
  Debug "image a traiter : "+ImgSrc()
  If LoadImage(3, ImgSrc())
    Debug "Image de sortie : "+ImgSAV()
    Limg=ImageWidth(3):Himg=ImageHeight(3)
    ResizeImage(3,300,300,#PB_Image_Smooth)
    
    ;Sauvegarde
    SaveImage(3,ImgSAV(),#PB_ImagePlugin_JPEG,taux)
    
  Else
    MessageRequester(" ","IMPOSSIBLE DE CHARGER L'IMAGE")
  EndIf
  
Wend

MessageRequester(" ","Les images ont été créées (allez vérifier)"+Chr(10)+"Cliquez sur OK pour quitter et effacer les images de ce test")
; On vire les images
ResetList(ImgSrc()) : ResetList(ImgSAV())
While NextElement(ImgSrc())
  NumNew=SelectElement(ImgSAV(), ListIndex(ImgSrc())) 
  DeleteFile(ImgSAV()) : DeleteFile(ImgSrc())
Wend  
End
  
Dernière modification par Ar-S le mar. 13/avr./2010 0:02, modifié 1 fois.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
Jacobus
Messages : 1559
Inscription : mar. 06/avr./2004 10:35
Contact :

Re: Probleme de sauvegarde d'images [SaveImage()]

Message par Jacobus »

Je pense que le second code répond car il n'est pas "enfermé" dans des procédures.
Donc pour ton code original je te suggère de créer tes NewList en Global pour qu'elle soient accessibles.
Je ne suis pas chez moi, je ne peux donc pas tester, mais à vue d'oeil....
Exemple:

Code : Tout sélectionner

Global NewList ImgSrc.s()
Global NewList ImgSAV.s()
Quand tous les glands seront tombés, les feuilles dispersées, la vigueur retombée... Dans la morne solitude, ancré au coeur de ses racines, c'est de sa force maturité qu'il renaîtra en pleine magnificence...Jacobus.
Avatar de l’utilisateur
MLD
Messages : 1124
Inscription : jeu. 05/févr./2009 17:58
Localisation : Bretagne

Re: Probleme de sauvegarde d'images [SaveImage()]

Message par MLD »

Salut Ar-S

J'ai eu le même problème que toi.
depuis systématiquement je fait comme ceci

Enumeration 2 ;images
#Image_1 = 300
#Image_2 = 301
ect
EndEnumeration

C'est un peu lourd, mais depuis plus de problème notamment dans les procédures. :wink:
Michel
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Probleme de sauvegarde d'images [SaveImage()]

Message par Ar-S »

Merci les gars, j'ai essayé les 2 tips, toujours pareil.
Je m'arrache les cheveux.

Code : Tout sélectionner

SaveImage(#Image,NomNew$,#PB_ImagePlugin_PNG)
blabla #image is not initialized
Je ne comprends vraiment pas car je suis certains que les images se chargent car je debug le if loadimage
et j'obtiens bien dans le debug :
image a traiter : K:\Pics\Bellamy\homebm12-98.jpg
Image chargée : K:\Pics\Bellamy\homebm12-98.jpg ; l'image est chargée !
Nom de sortie : K:\Pics\Bellamy\min_homebm12-98.png ; Le nom de sortie est bien reconnu
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
MLD
Messages : 1124
Inscription : jeu. 05/févr./2009 17:58
Localisation : Bretagne

Re: Probleme de sauvegarde d'images [SaveImage()]

Message par MLD »

@Ar-S

Fait bien attention aux numéros des images, Il est possible que comme tu ne force pas les images a prendre un numéro, elle prennent dans tes boucles un numéro de gadget existant. c'est pour cela que je donne toujours a mes images des numéros éloignés de ceux des gadgets du logiciel proprement dit.
N'oublie pas que tu as en fait pour les 4 images de bases quatre autres images réduites donc 8 numéros d'images.
Je travaille actuellement sur un giciel qui comporte environ 30 images plus la modification de certaines de celle-ci par le logiciel, et cela m'arrive d'avoir le même message d'erreur que toi. Ceci provient soit d'une numérotation d'image mauvaise, soit parceque par erreur j'ai utilisé le même numéro pour 2 images différentes.En fait si l'on est pas rigoureux dans le numérotage des images cela devient vite une usine a gaz. :cry:
Michel
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Probleme de sauvegarde d'images [SaveImage()]

Message par Backup »

utilise tu plusieurs enumeration-endenumeration ?

je dis ça car c'est classique de se retrouver avec plusieurs constantes qui se chevauches.

sinon regarde bien tes procedures , tu dois avoir une variables qui reste local
et dont tu te sers a l'exterieur (faire une shared si c'est le cas)

pas évident de t'aider sans le code.. :)
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Probleme de sauvegarde d'images [SaveImage()]

Message par Ar-S »

MLD, J'ai numéroté les différentes #image, même chose :(

Dobro, faut que je regarde, c'est possible même si je ne vois pas trop pourquoi.
je n'utilise pas plusieurs enumeration endenumeration

----edit-----

J'ai essayé en Shared, en donnant aussi un nom non utilisé aux #image traitées dans l'explorer.. pareil..
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
MLD
Messages : 1124
Inscription : jeu. 05/févr./2009 17:58
Localisation : Bretagne

Re: Probleme de sauvegarde d'images [SaveImage()]

Message par MLD »

@ Ar-S

Sans les codes de départ.
Numérotation
CatchImage
DataSection
Image0:IncludeBinary
ect
pas facile de t'aider
Michel
G-Rom
Messages : 3641
Inscription : dim. 10/janv./2010 5:29

Re: Probleme de sauvegarde d'images [SaveImage()]

Message par G-Rom »

UseJPEG2000ImageEncoder() ?


sinon , profite des maps !
Global NewMap MaListeImage.i()

MaListeImage("Mon Fichier.jpg") = LoadImage(#PB_Any,Mon Fichier.jpg)
Bouffe plus de RAM , mais super rapide à l'exécution , c'est du bonheur !
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Probleme de sauvegarde d'images [SaveImage()]

Message par Ar-S »

G-Rom a écrit :UseJPEG2000ImageEncoder() ?
ba quoi ?
sinon , profite des maps !
Global NewMap MaListeImage.i()
MaListeImage("Mon Fichier.jpg") = LoadImage(#PB_Any,Mon Fichier.jpg)
Bouffe plus de RAM , mais super rapide à l'exécution , c'est du bonheur !
Pour le traitement de moultes images tu penses pas que ce serait problématique si c'est glouton en ram ?
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
G-Rom
Messages : 3641
Inscription : dim. 10/janv./2010 5:29

Re: Probleme de sauvegarde d'images [SaveImage()]

Message par G-Rom »

Ar-S a écrit :
G-Rom a écrit :UseJPEG2000ImageEncoder() ?
ba quoi ?
sinon , profite des maps !
Global NewMap MaListeImage.i()
MaListeImage("Mon Fichier.jpg") = LoadImage(#PB_Any,Mon Fichier.jpg)
Bouffe plus de RAM , mais super rapide à l'exécution , c'est du bonheur !
Pour le traitement de moultes images tu penses pas que ce serait problématique si c'est glouton en ram ?
As tu essayer UseJPEG2000ImageEncoder() ?? car je ne comprends pas ton erreur.
Pour le traitement de moultes images tu penses pas que ce serait problématique si c'est glouton en ram ?
Non , regarde ogre3D , il utilise une grande map pour les ressources , et c'est rapide. j'ai pas dit que cela te boufferais 1go par image.
une map , c'est ni plus ni moins qu'un très grand tableau Dim() à une dimension
les map possèdent des "clé" MaMap("MaCle") , cette clé est transformé en chiffre , par le biais d'un algo que j'ai déjà posté sur le fofo il me semble , par exemple "Ma cle" = 54896 , les infos que tu va rentré seront dispo à l'index 54896 du tableau
Donc tu as un accès direct au données , plus besoin de Foreach / next ou de for/next pour savoir quel données je veut utilisé , c'est très très très pratique , même indispensable , quand ca sera supporté correctement dans les structures , on pourra vraiment faire des trucs de dingue en pb :D !
Avatar de l’utilisateur
Jacobus
Messages : 1559
Inscription : mar. 06/avr./2004 10:35
Contact :

Re: Probleme de sauvegarde d'images [SaveImage()]

Message par Jacobus »

Je reviens au code initial, et à tout hasard (n'ayant que peu d'éléments) as-tu donné une valeur à L et H

Code : Tout sélectionner

Limg=ImageWidth(4):Himg=ImageHeight(4)
ResizeImage(4,L,H,#PB_Image_Smooth)
Car dans le code d'exemple ils sont à 300... et Limg et Himg ne sont pas utilisés :!:
Bref, ça va pas être simple de tatonner avec un bout de code.
Quand tous les glands seront tombés, les feuilles dispersées, la vigueur retombée... Dans la morne solitude, ancré au coeur de ses racines, c'est de sa force maturité qu'il renaîtra en pleine magnificence...Jacobus.
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Probleme de sauvegarde d'images [SaveImage()]

Message par Backup »

en effet peut avant sa sauvegarde il utilise
en ligne 468
ResizeImage(#ImageAtraiter,L,H,#PB_Image_Smooth)



et si on met cette fonction en commentaire , il n'y a plus de plantage de la sauvegarde !!

c'est donc cette fonction qui fait perdre l'identifiant de l'image !! :)

et effectivement L,H sont a ZERO !!!
et ça risque pas d'etre autrement , ces 2 variables ne sont jamais peuplés !! :lol:

@jacobus on a posté en meme temps :)
Avatar de l’utilisateur
Jacobus
Messages : 1559
Inscription : mar. 06/avr./2004 10:35
Contact :

Re: Probleme de sauvegarde d'images [SaveImage()]

Message par Jacobus »

:mrgreen:
Quand tous les glands seront tombés, les feuilles dispersées, la vigueur retombée... Dans la morne solitude, ancré au coeur de ses racines, c'est de sa force maturité qu'il renaîtra en pleine magnificence...Jacobus.
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Probleme de sauvegarde d'images [SaveImage()]

Message par Ar-S »

je vais regarder ça, merci.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Répondre