Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    [VB.NET]Velocizzare ReadAllBytes

    Salve, forse ho trovato risposta (al quanto semplice) al resto dei thread che ho aperto nei giorni passati.

    Pensandoci, col php posso ottenere il contenuto di un' immagine con file_get_contents e metterlo in una nuova immagine che posso posizionare sul mio hosting, quindi dovrebbe esser possibile anche col visual basic.

    Con StreamReader ho fatto una prova, ma non legge le immagini, quindi sono passato a ReadAllBytes , solamente che poi facendolo diventare stringa con un ciclo for , ovviamente dovendo bypassare 1 byte alla volta (e le immagini arrivano a pesare anche 100kb) non finisce mai.

    C'è un modo per velocizzare quindi? Ad esempio settando quanta ram deve sfruttare..

    Codici che utilizzo attualmente:

    codice:
           
    Dim Bytes() As Byte = My.Computer.FileSystem.ReadAllBytes("C:\immagine.jpg")
            Dim Line As String = ""
            For n As Integer = 0 To Bytes.Length - 1
                Line += Bytes(n).ToString()
            Next
    Social Network in costruzione.. Misto tra Twitter e Facebook.. Twitbook o facetter?

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Originariamente inviato da 0-c00l
    Con StreamReader ho fatto una prova, ma non legge le immagini
    Con StreamReader si può leggere qualsiasi cosa: si tratta di un oggetto che legge dati da uno Stream generico, che può riferirsi a un file su disco, alla memoria, a un socket di rete o a qualsiasi altro flusso, indipendentemente dal suo contenuto.

    Originariamente inviato da 0-c00l
    quindi sono passato a ReadAllBytes
    ...che - detto per inciso - non può essere "velocizzato" come chiedi nel titolo, poiché semplicemente legge tutti i byte in un colpo solo, pertanto le performance ottenute sono il massimo che si possono raggiungere con questo metodo, mentre si dovrebbe capire cosa stai cercando di fare.

    Originariamente inviato da 0-c00l
    solamente che poi facendolo diventare stringa con un ciclo for , ovviamente dovendo bypassare 1 byte alla volta (e le immagini arrivano a pesare anche 100kb) non finisce mai.
    Ma perché mai dovresti leggere una immagine acquisendo tutti i byte con un ciclo e facendola diventare stringa?

    Nei tuoi post, non è mai chiaro quello che stai cercando di fare, l'obiettivo generale che vuoi ottenere, gli strumenti con cui lavori e i sistemi che interagiscono tra loro, né l'uso che fai delle classi del framework, quindi nella maggior parte dei casi sfido che sia impossibile aiutarti...
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    Originariamente inviato da alka
    Con StreamReader si può leggere qualsiasi cosa: si tratta di un oggetto che legge dati da uno Stream generico, che può riferirsi a un file su disco, alla memoria, a un socket di rete o a qualsiasi altro flusso, indipendentemente dal suo contenuto.


    ...che - detto per inciso - non può essere "velocizzato" come chiedi nel titolo, poiché semplicemente legge tutti i byte in un colpo solo, pertanto le performance ottenute sono il massimo che si possono raggiungere con questo metodo, mentre si dovrebbe capire cosa stai cercando di fare.



    Ma perché mai dovresti leggere una immagine acquisendo tutti i byte con un ciclo e facendola diventare stringa?

    Nei tuoi post, non è mai chiaro quello che stai cercando di fare, l'obiettivo generale che vuoi ottenere, gli strumenti con cui lavori e i sistemi che interagiscono tra loro, né l'uso che fai delle classi del framework, quindi nella maggior parte dei casi sfido che sia impossibile aiutarti...
    L' obiettivo generale è caricare un immagine in form per caricare immagini(andrebbe bene sia uno mio che imageshack o tinypic, ma tinypic chiede il captcha per i non-registrati e imageshack ha il button browse in flash, ma anche se era normale non riesco a impostargli il file).

    Comunque, l' intenzione di trasformare tutti i byte in stringa è per passarli in una textarea in un altro form che poi tramite fopen li inserirà in un' immagine.

    Comunque con StreamReader mi da solo quattro rombi neri con un punto interrogativo al centro. (Cosa che non appare col php) e quindi passando ciò al php per trasformarlo in un immagine, la cosa non va a buon fine (immagine non si visualizza)
    Social Network in costruzione.. Misto tra Twitter e Facebook.. Twitbook o facetter?

  4. #4
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Originariamente inviato da 0-c00l
    Comunque, l' intenzione di trasformare tutti i byte in stringa è per passarli in una textarea in un altro form che poi tramite fopen li inserirà in un' immagine.
    Ma perché mai passare un'immagine, che è fatta di dati binari, a una textarea che è fatta per contenere del testo?
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480

    Re: [VB.NET]Velocizzare ReadAllBytes

    A parte le perplessità di alka che condivido, è comunque più efficiente scrivere

    codice:
    StringBuilder line = new StringBuilder();
    
    foreach (Byte b in Bytes)
       line.AppendFormat("{0:X2}", b);
    e poi usare

    line.ToString()
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  6. #6
    Oregon, la parte " {0:X2} " cosa indica?

    Comunque per togliere le perplessità, passo un' immagine (la struttura diciamo) ad una textarea perchè poi quella textarea tramite il php la ritrasforma in immagine. Diciamo che è un upload indiretto.

    Sei sicuro che il codice che mi hai passato sia vb.net? Non mi risulta che alla fine delle istruzioni ci vada il ; e in più
    codice:
    StringBuilder line = new StringBuilder();
    e
    codice:
    foreach (Byte b in Bytes)
    me li dà come errori, quindi ho modificato:

    codice:
            Dim Bytes() As Byte = My.Computer.FileSystem.ReadAllBytes("C:\immagine.jpg")
            Dim line = New StringBuilder()
    
            For Each b In Bytes
                line.AppendFormat("{0:X2}", b)
            Next
    
            Dim linefine as string = line.ToString()
            WebBrowser1.Document.GetElementById("contenuto").SetAttribute("value", linefine)
            WebBrowser1.Document.GetElementById("crea").InvokeMember("click")
    Solo che mi da errore "Riferimento a un oggetto non impostato su un'istanza di oggetto." a

    codice:
    WebBrowser1.Document.GetElementById("contenuto").SetAttribute("value", linefine)
    Social Network in costruzione.. Misto tra Twitter e Facebook.. Twitbook o facetter?

  7. #7
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da 0-c00l
    Oregon, la parte " {0:X2} " cosa indica?
    Indica che il valore viene convertito in 2 cifre esadecimali ...

    Sei sicuro che il codice che mi hai passato sia vb.net?
    No, infatti, è C#.

    Ho omesso di dirlo ma mi sembrava evidente ... in fondo questo è un sito per programmatori ... la conversione di 3 righe è semplicissima ... e infatti l'hai fatto ...

    Solo che mi da errore "Riferimento a un oggetto non impostato su un'istanza di oggetto." a
    Questa è un'altra storia ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  8. #8
    Originariamente inviato da oregon
    Indica che il valore viene convertito in 2 cifre esadecimali ...



    No, infatti, è C#.

    Ho omesso di dirlo ma mi sembrava evidente ... in fondo questo è un sito per programmatori ... la conversione di 3 righe è semplicissima ... e infatti l'hai fatto ...



    Questa è un'altra storia ...
    Ok ho risolto usando InnerText invece di SetAttribute , comunque non funziona il metodo che volevo provare. Rinuncio al fatto di caricare immagini online da un programma.
    Social Network in costruzione.. Misto tra Twitter e Facebook.. Twitbook o facetter?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.