Immagini miniature/icone pagine PDF

di il
43 risposte

43 Risposte - Pagina 3

  • Re: Immagini miniature/icone pagine PDF

    Non è il componente soutinsoft. l'ho escluso dalla sub lasciando altri .jpg nella cartella ed il problema persiste. non potrebbero essere o la listview o la immagelist che in qualche modo occupano il gile .jpg al momento di cancellarlo??????
  • Re: Immagini miniature/icone pagine PDF

    1) la ClosePdf comunque ci va perché il pdf va chiuso

    2) la Listview/Imagelist non influiscono

    3) è possibile che il problema venga creato da qualche altra parte del codice

    E comunque, cerca di capire da quale processo viene bloccato il file jpg. Ci sono dei tool (come ProcessExplorer) per capirlo.

    Controlla che il problema si manifesti anche con l'eseguibile (chiudi l'IDE)
  • Re: Immagini miniature/icone pagine PDF

    Come è indicato nella documentazione del metodo FromFile, che è l'unico utilizzato per accedere ai file delle immagini in lettura,
    "Il file rimane bloccato fino a quando non viene eliminato l'oggetto".

    Ne consegue che le immagini create con il metodo FromFile, fino a quando sono utilizzate nell'applicazione, tengono bloccato il file da cui sono state caricate.

    Usa un altro metodo. Ad esempio, carica in memoria tutti i byte della singola immagine (usando File.ReadAllBytes) specificando il percorso, sganciandoti quindi dal file una volta acquisiti i dati, crea poi attorno ai byte un oggetto MemoryStream per poterli leggere e passa lo stream al metodo Image.FromStream.

    In questo modo, puoi cancellare le immagini in qualsiasi momento dopo averle caricate nella ListView.
  • Re: Immagini miniature/icone pagine PDF

    Grazie Marco
  • Re: Immagini miniature/icone pagine PDF

    Scusa Alka ma se utilizzassi il metodo dispose?
    qualcosa del genere potrebbe funzionare?
      Public Sub CancellaFileDir(Path As String)
    
            Dim di As IO.DirectoryInfo = New IO.DirectoryInfo(Path)
            For Each File As IO.FileInfo In di.GetFiles()
                System.Drawing.Image.FromFile(File.ToString).Dispose()
                File.Delete()
            Next
        End Sub
    ???
  • Re: Immagini miniature/icone pagine PDF

    F11 Ho provato ma niente da fare anche col metodo Dispose non rilascia il file !!
  • Re: Immagini miniature/icone pagine PDF

    FromFile rilascia il file solo alla chiusura dell'applicazione, è un bug noto da tempo

    Devi leggere il file con ReadAllBytes e trasformarlo in image, dopo se ho un attimo di tempo ti mando il codice
  • Re: Immagini miniature/icone pagine PDF

    Come vi dicevo, il metodo Image.FromFile ha un bug noto da molti anni, e mai risolto.

    Crea la funzione qui sotto riportata:
        Private Function ImageFromFile(ByVal ImageName As String) As Bitmap
    
            Dim fp = New IO.FileStream(ImageName, IO.FileMode.Open, IO.FileAccess.Read)
            Dim bmp = New Bitmap(fp)
            fp.Close()
            Return bmp
    
        End Function
    
    e poi al posto di
    ImageList1.Images.Add(file, System.Drawing.Image.FromFile(file))
    mettici
    ImageList1.Images.Add(file, ImageFromFile(file))

    vedrai che poi riesci a cancellare il file JPG senza problemi

    Sergio
  • Re: Immagini miniature/icone pagine PDF

    Giuseppe1974 ha scritto:


    F11 Ho provato ma niente da fare anche col metodo Dispose non rilascia il file !!
    Sfido io che non funziona: basta leggere il codice che hai scritto e ragionarci sopra un attimo per capirlo, anche se ammetto che oggi pare sia una prassi in dismissione... sarà colpa del virus.

    Tu hai scritto questo all'interno di un ciclo:
    
    System.Drawing.Image.FromFile(File.ToString).Dispose()
    
    Quello che stai facendo di fatto è istanziare una nuova immagine dal nome del file (che è l'effetto di Image.FromFile) e successivamente chiami la Dispose(). In pratica, stai facendo una operazione inutile, creando nuove immagini caricandole dal file e rilasciando l'oggetto appena dopo, ma le immagini che stanno bloccando i file sono quelle che sono state inserite nella ListView, che permangono ancora in memoria e che non puoi ovviamente "disporre" fino a quando devono rimanere visualizzate. Se carichi di nuovo l'immagine e poi la rilasci, stai rilasciando solo la seconda istanza, ma non la prima.

    Detto questo, concludo con la consueta "ramanzina" perché ci vuole: tu hai chiesto aiuto e ti è stata data una soluzione... perché non provi quella invece di perseguire strade fallaci e campate in aria?

    Se ti si danno suggerimenti con tanto di link alla documentazione per cercare di farti capire e risolvere il problema e tu fai comunque di testa tua, allora basta dirlo che evito di perdere tempo e invece di risponderti mi vado a vedere una serie su Netflix.
  • Re: Immagini miniature/icone pagine PDF

    Alka ha scritto:


    mi vado a vedere una serie su Netflix.
    Anch'io
  • Re: Immagini miniature/icone pagine PDF

    Salve ragazzi.
    nuovo problema ...dovrebbe essere semplice
    ho una listview con la proprietà checkbox uguale a true.
    bene ho bisogno di scorrere gli item con un un ciclo For ...next con contattore I as integer e di sapere per ogni item (I) della listview se la checkbox corrispondente è selezionata...avevo scritto questo codice, ma evidentemente è sbagliato.
     For I As Integer = 1 To reader.NumberOfPages
                If ListView2.CheckedItems.IndexOfKey(I) = True Then
                '      blocco istr
                end if
               next I
    
    grazie
  • Re: Immagini miniature/icone pagine PDF

    Giuseppe1974 ha scritto:


    bene ho bisogno di scorrere gli item con un un ciclo For ...next con contattore I as integer e di sapere per ogni item (I) della listview se la checkbox corrispondente è selezionata...avevo scritto questo codice, ma evidentemente è sbagliato.
    E' sbagliato perché, come al solito, hai preso probabilmente il primo metodo che ti è capitato sottomano o che ti ha proposto Visual Studio, oppure quello corrispondente al numero uscito dal lancio di dadi con cui selezioni la procedura da invocare.

    Dalla roulette (quasi russa) questa volta è uscito il metodo IndexOfKey, quindi "scriviamolo sperando che vada".

    Apparentemente però non fa quello che chiedi, ma scommetto che non sei andato a leggere nella documentazione del metodo per vedere a cosa serve, perché leggendo il suo scopo risulta ovvio il motivo per cui non fa quello che ti aspetti, visto che il suo obiettivo è un altro, oltre a restituire un valore intero (Integer) che tu stai confrontando con un Boolean.

    Leggi ad alta voce il codice che hai scritto dopo aver visto cosa fanno le funzioni che stai chiamando e almeno ti accorgerai subito dell'errore.

    Se la discussione deve proseguire in questo modo, l'interesse e lo stimolo a rispondere (per me) è pari a zero.

    A questo punto, si fa prima se ci dici tutti i requisiti che devi implementare e la facciamo noi se ogni volta devi limitarti a usare la prima cosa che ti salta all'occhio, senza approfondire a cosa serve, nella speranza che vada, stupendoti sempre che avvenga il contrario.

    Ti invito ancora una volta a cambiare la modalità con cui approcci il problema, o meglio ad approcciare semplicemente il problema.

    Tra l'altro, ad essere formali, già che stai trattando un nuovo problema, sarebbe opportuno che tu aprissi una discussione dedicata, altrimenti questa diventa la storia infinita della realizzazione del tuo programma sotto ogni aspetto e si spazia su tutto lo scibile, dalla conversione di PDF alla manipolazione di immagini, all'inserimento in una lista, allla visualizzazione, alla selezione ecc. ecc. e diventa un casino.

    Infine, anche per rispetto a quelli che ti hanno risposto recentemente, siccome parli di un "nuovo problema" sarebbe interessante sapere se quelli "vecchi" sono stati risolti, e in che modo, giusto per dare un senso alla discussione e poterla "chiudere" affinché possa essere utile anche ad altri.

    Concludendo, sei fortunato che non sono un moderatore, altrimenti avresti avuto "vita" breve.
  • Re: Immagini miniature/icone pagine PDF

    Alka ha scritto:


    Se la discussione deve proseguire in questo modo, l'interesse e lo stimolo a rispondere (per me) è pari a zero.
    anche per me, per cui auguri e divertiti, se devo perdere tempo lo faccio con chi ne vale la pena, condivido appieno quello che ha scritto Alka

    Sergio
  • Re: Immagini miniature/icone pagine PDF

    Ok ragazzi comprendo.
Devi accedere o registrarti per scrivere nel forum
43 risposte