Autore Topic: [Risolto" DirChooser e ridimensiona immagine  (Letto 1337 volte)

Offline 9bit

  • Grande Gambero
  • ***
  • Post: 191
    • Mostra profilo
[Risolto" DirChooser e ridimensiona immagine
« il: 23 Aprile 2013, 19:51:07 »
Ho la necessità di ridimensionare tutte le immagini collocate in una cartella,
e sto cercando di farlo da gui usando i comandi di Imagemagick, ma non riesco
a capire come funziona....
Ho sul form una DirChooser e una bottone, e questo è il codice, dove sbaglio?

Codice: [Seleziona]
UBLIC SUB Button1_Click()
DIM s AS String

  
  s = DirChooser1.SelectedPath
  
  
  SHELL "mogrify" " -resize 400x300!" "*" & s


END

e questo è quello che funziona da terminale
Codice: [Seleziona]
mogrify -resize 400x300! -quality 50% *
Grazie 1000  :ciao:
« Ultima modifica: 23 Aprile 2013, 23:41:54 da 9Bit »

Offline fsurfing

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.482
    • Mostra profilo
Re: DirChooser
« Risposta #1 il: 23 Aprile 2013, 21:20:40 »
senza usare il terminale potresti fare una cosa del tipo:

Codice: [Seleziona]
dim lista as new string[]
dim tmpimg as image

s = DirChooser1.SelectedPath

lista= dir(s)

for i=0 to lista.max
   tmpimg= image.load(lista[i])
   tmpimp=image.strecth(400,300)
   tmpimg.save(lista[i],50)
next

ps: potrebbero esserci piccoli errori , sto andando a memoria , non ho gambas sotto mano, però il senso è quello.

non mi ricordo se in lista hai il percorso completo , altrimenti a lista sostituisci  s & "/" & lista

con shell dovrebbe essere qualcosa del tipo:

Codice: [Seleziona]
SHELL "mogrify -resize 400x300! -quality 50% * " & s


Offline 9bit

  • Grande Gambero
  • ***
  • Post: 191
    • Mostra profilo
Re: DirChooser
« Risposta #2 il: 23 Aprile 2013, 21:59:00 »
Grazie per avermi risposto  :)
Purtroppo il codice da te postato non funzione, mi da errore "unable to load image".
Anche sostituendo "lista con s & "/" & lista" mi segnala un errore.
Con il codice da "shell" non mi da nessun errore, ma le immagini non vengono ridimensionate   :-\
 :hatecomputer:

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.720
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: DirChooser
« Risposta #3 il: 23 Aprile 2013, 23:28:17 »
Purtroppo il codice da te postato non funzione, mi da errore "unable to load image".
Anche sostituendo "lista con s & "/" & lista" mi segnala un errore.


Si risolve così:
Codice: gambas [Seleziona]

Public Sub ...............()

 Dim lista As New String[]
 Dim tmpimg As Image
 Dim s As String
 Dim i As Short

   s = DirChooser1.SelectedPath

   lista = Dir(s)

   For i = 0 To lista.Max
     tmpimg = Image.load(s &/ lista[i])
     tmpimg = tmpimg.Stretch(400, 300)
     tmpimg.Save(s &/ lista[i], 50)
   Next

End

Ricorda comunque che non è possibile salvare in tutti i formati immagine:
http://www.gambas-it.org/wiki/index.php?title=Salvare_una_Image
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline 9bit

  • Grande Gambero
  • ***
  • Post: 191
    • Mostra profilo
Re: DirChooser
« Risposta #4 il: 23 Aprile 2013, 23:32:44 »
Ho fatto delle prove con questo codice, e sembra che il percorso viene riconosciuto, infatti l'immagine viene processata, ma non viene rimpicciolita, va solo a diminuire il peso, da 3.6 mb a 1.3 mb...l'immagine è sempre di
4320x3240  :'(

Codice: [Seleziona]
PUBLIC SUB Button1_Click() 

  DIM lista AS NEW string[]
  DIM tmpimg AS image
  DIM tmpimp AS Image
  DIM s AS String
  DIM i AS Integer
  DIM Frame AS NEW Image

    s = DirChooser1.SelectedPath

    lista = Dir(s)

   FOR i = 0 TO lista.max
     tmpimg = image.load(s & "/" & lista[i])
     Frame = Frame.Stretch(200, 100)
     'tmpimg.save(lista[i], 50)
     tmpimg.save(s & "/" & lista[i], 50)
   NEXT

END

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.720
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: DirChooser
« Risposta #5 il: 23 Aprile 2013, 23:38:12 »
Io ho fatto, ovviamente, il test con le modifiche, che ti ho segnalato sopra, al codice di fsurfing. Devo dire che le immagini poste in una cartella di prova sono state regolarmente modificate nella loro dimensione !   :-\
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline 9bit

  • Grande Gambero
  • ***
  • Post: 191
    • Mostra profilo
Re: DirChooser
« Risposta #6 il: 23 Aprile 2013, 23:38:52 »
Purtroppo il codice da te postato non funzione, mi da errore "unable to load image".
Anche sostituendo "lista con s & "/" & lista" mi segnala un errore.


Si risolve così:
Codice: gambas [Seleziona]

Public Sub ...............()

 Dim lista As New String[]
 Dim tmpimg As Image
 Dim s As String
 Dim i As Short

   s = DirChooser1.SelectedPath

   lista = Dir(s)

   For i = 0 To lista.Max
     tmpimg = Image.load(s &/ lista[i])
     tmpimg = tmpimg.Stretch(400, 300)
     tmpimg.Save(s &/ lista[i], 50)
   Next

End

Ricorda comunque che non è possibile salvare in tutti i formati immagine:
http://www.gambas-it.org/wiki/index.php?title=Salvare_una_Image
Scusami, ma non avevo visto il post.............................
Ha funzionatooooooooooooooo
GRAZIE A TUTTI  :-*

Offline 9bit

  • Grande Gambero
  • ***
  • Post: 191
    • Mostra profilo
Re: DirChooser
« Risposta #7 il: 23 Aprile 2013, 23:45:04 »
Ricorda comunque che non è possibile salvare in tutti i formati immagine:
http://www.gambas-it.org/wiki/index.php?title=Salvare_una_Image

Grazie ancora  :)