Visualizza post

Questa sezione ti permette di visualizzare tutti i post inviati da questo utente. N.B: puoi vedere solo i post relativi alle aree dove hai l'accesso.


Post - therock892

Pagine: [1]
1
vuott la prova che hai fatto mi dà la conferma che hanno risolto il bug.
Peccato che io debba farlo girare su versioni più vecchie..adesso io stò usando la 3.1.1.

Boh ho provato ad usare anche il metodo Image.Flush che dovrebbe eliminare la cache dell'immagine ma non cambia niente..

Sono avvilito..mi sà che mi tokkerà passare alle Qt..peccato preferivo le Gtk  ;D

2
Mi piacerebbe sapere se esiste un modo in Gambas per liberare, in particolare, la memoria occupata dagli oggetti Image.

Mi spiego meglio; ho notato che con le applicazioni Gambas, che usano Gtk, è presente un bug con gli oggetti Image e Picture che si presenta quando vengono caricate immagini senza Alpha Channel.

Quando si caricano queste immagini ad es in una PictureBox tramite variabili locali..queste rimangono in eterno in memoria, portando alla saturazione della memoria RAM! :hatecomputer:

Leggendo le note di rilascio di Gambas 3.5.2 sembra che da quella versione il bug sia stato risolto, anche se non l'ho testato personalmente  :)

Il mio problema è che io avrei la necessità di fare girare correttamente i miei programmini, anche sulle versioni precedenti di Gambas con le Gtk!  :'(

Vi lascio un codice di esempio che mette in evidenza il problema, (basta trascinare una immagine sulla PictureBox per vedere dal Monitor di sistema il processo gbx3 schizzare tra i primi posti come memoria occupata! :-P)

Codice: vb [Seleziona]

Public Sub Form_Open()
 
  PictureBox1.Drop = True
 
End

Public Sub PictureBox1_Drop()
 
  Dim image_file As Image 
  Dim images_file_drop As String[]
  Dim image_file_drop As String
  Dim i As Integer
 
  images_file_drop = Split(Drag.Data, "\r\n", "", True)
 
  For i = 0 To 30
     
    For Each image_file_drop In images_file_drop
     
      image_file_drop = Right(image_file_drop, Len(image_file_drop) - 7)
      image_file = Image.Load(image_file_drop)
      PictureBox1.Picture = image_file.Picture
     
    Next
   
  Next
 
End

3
vuott ho provato il tuo codice e pare funzionare alla perfezione!  :D

Grazie mille a tutti, io avevo fatto delle prove con la funzione Conv, per provare a convertire i set di caratteri, ma senza risolvere niente!  ;D

4
Con i file senza caratteri strani funziona.
Sicuramente è un bug come ha conferermato anche Ceskho, magari adesso lo segnalo.
Se qualcuno sa come aggirare il bug nel frattempo ad es. convertendo la stringa in qualche modo..boh

5
Ciao a tutti,
il problema che non sono riuscito a risolvere (e spero che qualcuno sia in grado di darmi una mano  :) ) è il seguente:

- quando provo a caricare un file tramite Drag and Drop ad es. su una PictureBox, che contiene al suo interno caratteri "speciali" (tipo spazi, lettere accentate ec..) il file non viene caricato e viene generato una Eccezzione (Not a object); in pratica non trova il file.

- caricando lo stesso file tramite una Dialog (es: DialogOpenFile) invece il file viene caricato correttamente.

Penso che il problema potrebbe essere dovuto ad una possibile codifica diversa con cui vengono restituite le stringhe dagli oggetti Drag e Dialog.

Infatti le stringhe restituite dei rispettivi file sono:

- tramite Drag and Drop: /home/luigi/Desktop/Gota_D'%C3%A1gua_by_Eiti_Kimura.jpg
- tramite Dialog: /home/luigi/Desktop/Gota_D'água_by_Eiti_Kimura.jpg

Penso sia un bug di Gambas, la versione di Linux che stò utilizzando è Ubuntu 14.04 64bit e Gambas 3.1.1

Un mega grazie a chi riesce ad aiutarmi a risolvere questo grattacapo!  ;D

Il codice:

Codice: vb [Seleziona]

Public Sub PictureBoxImage_Drop()
  
  Print Drag.Data
  LoadImage
  
End

Public Sub LoadImage()

  Dim filePicture As String
  Dim imagePicture As Image
  
  filePicture = Drag.Data
  Print filePicture
  
  filePicture = Right(filePicture, Len(filePicture) - 7)
  filePicture = Left(filePicture, Len(filePicture) - 2)
  
  Print filePicture
  
  imagePicture = Image.Load(filePicture)
  PictureBoxImage.Picture = imagePicture.Picture
  
  Catch
    Error.Text

End

Public Sub ButtonOpen_Click()

  Dim filePicture As String
  Dim imagePicture As Image
  
  If (Dialog.OpenFile() == False)
    
    Print Dialog.Path
    
    filePicture = Dialog.Path
    imagePicture = Image.Load(filePicture)
    PictureBoxImage.Picture = imagePicture.Picture
    
  Endif

End


6
Ciao a tutti, in un mio programma, disegnare una immagine dentro DrawingArea mi causa il riempimento della memoria RAM!
Non sò se il problema è dovuto ad un BUG delle GTK o no..eseguendolo con le librerie QT(gb.qt4 invece di gb.gtk) il problema non si manifesta..ma vorrei farlo funzionare correttamente anche con le GTK.

Nel mio codice ho una DrawingArea con l'opzione Painted=True e utilizzo i metodi Paint per scriverci e disegnarci sopra.

Il problema si verica con la seguente linea di codice:
Paint.DrawImage(image_background, 0, 0, DrawingAreaEs.Width, DrawingAreaEs.Height)
presente nell'evento:
DrawingAreaEs_Draw()

con il programma in esecuzione e con il passare del tempo Paint.DrawImage mi riempie tutta la memoria.

Ho sbagliato qualcosa io?
Dovrei richiamare una funzione per pulire la DrawingArea prima di ridisegnarla? (anche se penso che dovrebbe farlo in automatico senza l'opzione Cached abilitata, come nel mio caso!)

Pagine: [1]