Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    278

    [vb.net]aumentare luminosità immagine

    vorrei aumentare la luminosità di un'immagine.
    ho provato con gli rgb moltiplicando r , g , b, per valori intorno all'1 ma ottengo solamente o un'inscurimento per valori sotto l'1 o uno schiarimento di scarso risultato, o un messsaggio d'errore se maggiore di 1.
    il messaggio d'errore è che supero i 255.
    come posso fare?
    ciao

  2. #2
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    278

    [vb.net]convertire da c# in vb.net aiutatemi!!

    public static bool Brightness(Bitmap b, int nBrightness)
    // LUMINOSITA' (richiede il parametro della luminosità compreso tra -255 e 255)
    {
    // eseguo il controllo dell'intervallo -255/255
    if (nBrightness < -255 || nBrightness > 255)
    return false;

    // stessi commenti della funzione INVERT per quanto riguarda le inizializzazioni
    BitmapData bmData = b.LockBits(new Rectangle(0, 0, b.Width, b.Height), ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb);

    int stride = bmData.Stride;
    System.IntPtr Scan0 = bmData.Scan0;

    // variabile nVal = 0 che sarà usata per contenere la somma del colore con la luminosità
    int nVal = 0;

    unsafe
    {
    byte * p = (byte *)(void *)Scan0;

    int nOffset = stride - b.Width*3;
    int nWidth = b.Width * 3;

    for(int y=0;y<b.Height;++y)
    {
    for(int x=0; x < nWidth; ++x )
    {
    // nVal = componente RGB + parametro luminosità
    nVal = (int) (p[0] + nBrightness);

    // controllo che nVal sia compreso tra 0 e 255 (componente RGB)
    if (nVal < 0) nVal = 0;
    if (nVal > 255) nVal = 255;

    // riassegno alla componente RGB il nuovo valore
    p[0] = (byte)nVal;
    // incremento il puntatore alla componente successiva
    ++p;
    }
    // incremento alla riga successiva
    p += nOffset;
    }
    }

    b.UnlockBits(bmData);

    return true;
    }


    qualcuno me lo può tradurre per vb.net???
    vi prego c'è quel puntatore unsafe che non riesco a tradurre...
    heeeeeeelp...

  3. #3
    Convertendo in Vb.Net:
    codice:
    Public Shared Function Brightness(b As Bitmap, nBrightness As Integer) As Boolean
       ' LUMINOSITA' (richiede il parametro della luminosità compreso tra -255 e 255)
       ' eseguo il controllo dell'intervallo -255/255
       If nBrightness < - 255 Or nBrightness > 255 Then
          Return False
       End If 
       ' stessi commenti della funzione INVERT per quanto riguarda le inizializzazioni 
       Dim bmData As BitmapData = b.LockBits(New Rectangle(0, 0, b.Width, b.Height), ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb)
       
       Dim stride As Integer = bmData.Stride
       Dim Scan0 As System.IntPtr = bmData.Scan0
       
       ' variabile nVal = 0 che sarà usata per contenere la somma del colore con la luminosità
       Dim nVal As Integer = 0
       
       '
       'ToDo: Error processing original source shown below
       '
       '
       '-^--- expression expected
       If (True) Then
          Dim p As Machine.BytePtr = New Machine.BytePtr(Machine.BytePtr.Cast(Machine.TypePtr.Cast(Scan0, GetType())))
          '
          'ToDo: Error processing original source shown below
          '
          '
          '---------------------^--- GenCode(token): unexpected token type
          
          Dim nOffset As Integer = stride - b.Width * 3
          Dim nWidth As Integer = b.Width * 3
          
          Dim y As Integer
          
          While y < b.Height
             Dim x As Integer
             
             While x < nWidth
                ' nVal = componente RGB + parametro luminosità
                nVal = CInt(p(0) + nBrightness)
                
                ' controllo che nVal sia compreso tra 0 e 255 (componente RGB)
                If nVal < 0 Then
                   nVal = 0
                End If
                If nVal > 255 Then
                   nVal = 255
                End If 
                ' riassegno alla componente RGB il nuovo valore
                p(0) = CByte(nVal)
             End While ' incremento il puntatore alla componente successiva
             ' incremento alla riga successiva
             p = p.PtrForOffset(nOffset)
          End While
       End If
       
       b.UnlockBits(bmData)
       
       Return True
    End Function 'Brightness
    Risultato ottenuto utilizzando l'utility su http://authors.aspalliance.com/aldot...translate.aspx
    Vedi se ti possono essere d'aiuto i risultati e gli errori mostrati.

  4. #4
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    278
    mi dà solo un errore qui vuole: previsto tipo

    Dim p As Machine.BytePtr = New Machine.BytePtr(Machine.BytePtr.Cast(Machine.TypeP tr.Cast(Scan0, GetType()))


    che dite...che si può fare???per me è un po' complicatino...se mi aiutate...mi fate un grosso piacere...

  5. #5
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,463

    Moderazione

    Ho unito la discussione ad una precedentemente aperta, visto che l'argomento sembrerebbe essere lo stesso.

    Ad ogni modo, suggerisco l'uso di titoli più significativi e meno esortativi.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

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

  6. #6
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    278
    mmm.....l'hai unito...insomma non era proprio lo stesso ...visto che per quello ho trovato la soluzione, a me serviva tradurre il codice....cmq va bene uguale...

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.