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?
UBLIC SUB Button1_Click()
DIM s AS String
s = DirChooser1.SelectedPath
SHELL "mogrify" " -resize 400x300!" "*" & s
END
e questo è quello che funziona da terminale
mogrify -resize 400x300! -quality 50% *
Grazie 1000 :ciao:
senza usare il terminale potresti fare una cosa del tipo:
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:
SHELL "mogrify -resize 400x300! -quality 50% * " & s
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ì:
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
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 :'(
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