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

    Codice per resize, crop e compressione immagini

    Sperando di fare cosa gradita a tutti posto il codice che uso io per il resize, il crop e lacompressione delle immagini:

    codice:
    <%@ Page Language="vb" Debug="true"%>
    <%@ import namespace="system"%>
    <%@ import namespace="system.drawing" %>
    <%@ import namespace="system.drawing.imaging" %>
    <%@ import namespace="system.drawing.drawing2d" %>
    <%
    
    
    
    Dim StrPath		As String
    Dim StrImgFile		As String
    Dim StrPathImmagine	As String
    Dim IntFinalWidth	As Integer
    Dim IntFinalHeight	As Integer
    Dim IntXSize		As Integer
    Dim IntYSize		As Integer
    Dim IntHalfWidth	As Integer
    Dim IntHalfHeight	As Integer
    Dim X			As Integer
    Dim Y			As Integer
    Dim IntXMiniatura	As Integer
    Dim IntYMiniatura	As Integer
    
    'Recupero il nome dell'immagine
    StrImgFile         =	Request.Querystring("image")
    'il path dove risiede l'immagine
    StrPath		   =    Server.Mappath("/images")
    'path+nomeimmagine
    StrPathImmagine	   =	StrPath &"/"& StrImgFile
    
    'Recupero la larghezza e la lunghezza che dovrà avere l'immagine
    IntFinalWidth	   =    Request.QueryString("w")
    IntFinalHeight	   =	Request.QueryString("h")
    			
    'Variabili per l'anteprima
    Dim ObjBMP As System.Drawing.Image
    Dim ObjGraphics As System.Drawing.Image
    
    'prendiamo alcune informazioni importanti dall'immagine orginale
    ObjBMP = New Bitmap(StrPathImmagine)
          
    'Misure dell'immagine
    Dim IntImgW As Integer = ObjBMP.Width
    Dim IntImgH As Integer = ObjBMP.Height
    			
    'Nuove misure dell'immagine servono per mantenere le proporzioni, per il mio caso mi basta ridimensionare in base all'altezza
    
    Dim IntNewImgW As Integer
    Dim IntNewImgH As Integer
    			
    IntNewImgH = IntFinalHeight
    IntNewImgW = (IntFinalHeight / IntImgH) * IntImgW
    			
    ObjGraphics = ObjBMP.GetThumbnailImage(IntNewImgW, IntNewImgH, Nothing, IntPtr.Zero)		
    		  
    'Compressione
    Dim compression as long
    'Recupero il valore di compressione (da 0 a 100)
    If Trim(Request.QueryString("c")) = "" then
      compression = 100
    Else
      compression = Request.QueryString("c")
    End if
    
    
    Dim myImageCodecInfo As System.Drawing.Imaging.ImageCodecInfo
    Dim myEncoder As System.Drawing.Imaging.Encoder
    Dim myEncoderParameter As System.Drawing.Imaging.EncoderParameter
    Dim myEncoderParameters As System.Drawing.Imaging.EncoderParameters
          
    			
    Dim i As Integer
    Dim encoders As System.Drawing.Imaging.ImageCodecInfo() = System.Drawing.Imaging.ImageCodecInfo.GetImageEncoders()
    
    For i = 0 To (encoders.Length - 1)
      If (encoders(i).MimeType = "image/jpeg") Then
        myImageCodecInfo = encoders(i)
      End If
    Next i
    			
    myEncoder = System.Drawing.Imaging.Encoder.Quality
    
    myEncoderParameters = New System.Drawing.Imaging.EncoderParameters(1)
    
    myEncoderParameter = New System.Drawing.Imaging.EncoderParameter(myEncoder, compression)
    
    myEncoderParameters.Param(0) = myEncoderParameter
    			
    ObjGraphics = ObjBMP.GetThumbnailImage(IntNewImgW, IntNewImgH, Nothing, IntPtr.Zero)
    			
    'Qui viene fatto il crop, se non vi è necessario saltatelo
    Dim ObjSysDrawImg as new 
    
    system.drawing.bitmap(IntFinalWidth, IntFinalHeight, pixelformat.Format24bppRgb)
    
    Dim ObjGraphics2 as graphics = graphics.fromimage(ObjSysDrawImg)
    
    ObjGraphics2.CompositingQuality = CompositingQuality.HighQuality
    ObjGraphics2.SmoothingMode = SmoothingMode.AntiAlias
    ObjGraphics2.InterpolationMode = InterpolationMode.HighQualityBicubic			
    			
    IntXSize = ObjGraphics.width-1
    IntYSize = ObjGraphics.height-1
    			
    IntHalfWidth = IntXSize/2
    IntHalfHeight = IntYSize/2
    X = IntHalfWidth - (IntFinalWidth/2)
    Y = IntHalfHeight - (IntFinalHeight/2)
    ObjGraphics2.drawimage(ObjGraphics, new rectangle(0, 0, IntFinalWidth, IntFinalHeight), new rectangle(X,Y,IntFinalWidth,IntFinalHeight),GraphicsUnit.Pixel)
    ObjGraphics.Dispose()
    '------------------------------------------------------
    			
    			
    			
    Response.ContentType="image/jpeg"
    
    'Se avete saltato il crop commentate la riga sottostante			
    ObjSysDrawImg.save(response.outputstream, myImageCodecInfo, myEncoderParameters)		
    
    'Se avete saltato il crop decomentate la riga sottostante
    			'ObjGraphics.Save(response.outputstream, myImageCodecInfo, myEncoderParameters)
    
    ObjBMP.Dispose()
    ObjGraphics2.Dispose()
    ObjSysDrawImg.Dispose()
    Per richiamare il tutto utilizzo:

    [img]resize.aspx?image=1.bmp&w=150&h=220&c=80[/img]

    Ciao a tutti

  2. #2
    Utente di HTML.it L'avatar di cassano
    Registrato dal
    Aug 2004
    Messaggi
    3,002
    Public Module ImageConverter
    Public Sub Main()
    Dim Dir As New DirectoryInfo(Directory.GetCurrentDirectory())
    Console.WriteLine(“Processing images in “ & Dir.FullName)
    ' Recupera tutti i file bitmap in questa directory.
    Dim File As FileInfo
    For Each File In Dir.GetFiles(“*.bmp”)
    Console.WriteLine(“Converting: “ & File.Name)
    ’ Carica l’immagine in memoria.
    Dim Image As Image = Image.FromFile(File.FullName)
    ’ Crea un nuovo nome di file.
    Dim JpgName As String
    JpgName = Path.GetFileNameWithoutExtension(File.FullName) & “.jpg”
    ’ Salva il file come JPEG.
    Image.Save(JpgName, ImageFormat.Jpeg)
    Console.WriteLine(“Saved: “ & JpgName)
    Console.WriteLine()
    Next
    Console.ReadLine()
    End Sub
    End Module
    Non solo si possono convertire i tipi di file di immagine, si possono anche
    specificare parametri addizionali che influenzano come i dati di immagine sono
    elaborati. Per esempio, si può cambiare la compressione di un file TIFF alla
    qualità di un file JPEG. Si può farlo usando oggetti Encoder, che devono essere
    passati a una versione in overload del metodo Image.Save. Molti utili oggetti
    Encoder possono essere ottenuti dalle proprietà shared della classe
    System.Drawing.Imaging.Encoder. Queste proprietà includono ChrominanceTable,
    ColorDepth, Compression, LuminanceTable, Quality, RenderMethod, SaveFlag,
    ScanMethod, Transformation e Version.
    Ulteriori informazioni sono disponibili sulla guida MSDN. Inoltre, l’esempio
    seguente mostra come si può utilizzare un oggetto Encoder per salvare file
    JPEG con differenti parametri di qualità.
    Public Module ImageConverter
    Public Sub Main()
    ’ Ottiene un oggetto ImageCodecInfo che rappresenta il codec JPEG.
    ’ Viene ottenuto cercando il corrispondente tipo MIME.
    Dim CodecInfo As ImageCodecInfo = GetEncoderInfo(“image/jpeg”)
    ’ Crea un oggetto Encoder basato sul parametro Quality.
    Dim Enc As Encoder = Encoder.Quality
    ’ Crea l’array che conterrà i parametri di codifica.
    ’ In questo caso, conterrà solo il parametro qualità.
    Dim EncParams As New EncoderParameters(1)
    Dim Dir As New DirectoryInfo(Directory.GetCurrentDirectory())
    Console.WriteLine(“Processing images in “ & Dir.FullName)
    ’ Recupera tutti i file bitmap nella directory corrente.
    Dim File As FileInfo
    For Each File In Dir.GetFiles(“*.bmp”)
    Console.WriteLine(“Converting: “ & File.Name)
    ’ Carica l’immagine in memoria.
    Dim Image As Image = Image.FromFile(File.FullName)
    ’ Crea un nuovo nome di file.
    Dim JpgName As String
    ’ Salva la bitmap come file JPEG con un livello di qualità 25.
    EncParams.Param(0) = New EncoderParameter(Enc, 25L)
    JpgName = Path.GetFileNameWithoutExtension(File.FullName) & _
    “25” & “.jpg”
    Image.Save(JpgName, CodecInfo, EncParams)
    Console.WriteLine(“Saved: “ & JpgName)
    ’ Salva la bitmap come file JPEG con un livello di qualità 50.
    EncParams.Param(0) = New EncoderParameter(Enc, 50L)
    JpgName = Path.GetFileNameWithoutExtension(File.FullName) & _
    “50” & “.jpg”
    Image.Save(JpgName, CodecInfo, EncParams)
    Console.WriteLine(“Saved: “ & JpgName)
    ’ Salva la bitmap come file JPEG con un livello di qualità 75.
    EncParams.Param(0) = New EncoderParameter(Enc, 75L)
    JpgName = Path.GetFileNameWithoutExtension(File.FullName) & _
    “75” & “.jpg”
    Image.Save(JpgName, CodecInfo, EncParams)
    Console.WriteLine(“Saved: “ & JpgName)
    Console.WriteLine()
    Next
    Console.ReadLine()
    End Sub
    Private Function GetEncoderInfo(ByVal mimeType As String) _
    As ImageCodecInfo
    Dim i As Integer
    Dim Encoders() As ImageCodecInfo = ImageCodecInfo.GetImageEncoders()
    For i = 0 To Encoders.Length - 1
    If Encoders(i).MimeType = mimeType Then
    Return Encoders(i)
    End If
    Next
    Return Nothing
    End Function
    End Module
    L’output di questa applicazione console apparirà così:
    Processing images in C:\Temp\Recipe 12-11\bin
    Converting: test.bmp
    Saved: test25.jpg
    Saved: test50.jpg
    Saved: test75.jpg
    io uso spesso questa funziona presa da un libro e funziona alla meraviglia.

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 1999
    Messaggi
    336

    per cassano ...

    caio !!

    Potresti spiegare meglio come utilizzare questa applicazione?

    Grazie 1000 !!!

  4. #4
    Utente di HTML.it L'avatar di cassano
    Registrato dal
    Aug 2004
    Messaggi
    3,002
    dimmi cosa non hai capito e te lo spiego.

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 1999
    Messaggi
    336

    :) provo, non mi ci mandare eh!

    trattasi di VB o C ?

    salvo il codice in una pagina (ad ex. immagini.apsx)?

    come richiamo l'immagine?



  6. #6
    domanda:
    se voglio usare uno dei vostri script quando faccio un'upload e salvare l'immagine ridimensionata come faccio??
    Vuoi condividere le tue Video, Foto e Musica con tutti i tuoi amici?
    http://www.manyego.com
    Entra a far parte della nostra Community!
    Ti aspettano migliaia di Video e Foto e centinaia di Amici!
    Crea il tuo Blog e personalizzalo con alcuni semplici passi!

  7. #7
    Utente di HTML.it L'avatar di cassano
    Registrato dal
    Aug 2004
    Messaggi
    3,002
    1)trattasi di VB o C ? VB

    2)salvo il codice in una pagina (ad ex. immagini.apsx)? yes e lo richiami e gli passi eventuali parametri.

  8. #8
    per cassano
    potresti inviarmi il file aspx a stany@bbart.it
    qualora volessi...

    potresti dire anche come passare le variabili?
    L'intuizione creativa più di ogni altra cosa è l'unico elemento per cui la vita vale la pena di essere vissuta (D.W)

  9. #9
    Utente di HTML.it L'avatar di cassano
    Registrato dal
    Aug 2004
    Messaggi
    3,002
    Dim Dir As New DirectoryInfo(Directory.GetCurrentDirectory())
    Console.WriteLine(“Processing images in “ & Dir.FullName)
    ' Recupera tutti i file bitmap in questa directory.
    Dim File As FileInfo
    For Each File In Dir.GetFiles(“*.bmp”)
    ragazzi se vedete il codice qua nn passa nulla ,recupera tutti i file di una directory e poi li lavora.....

  10. #10
    Utente di HTML.it
    Registrato dal
    Dec 1999
    Messaggi
    336

    errore ...

    Compiler Error Message: BC30183: Keyword is not valid as an identifier.

    Source Error:

    Line 2:
    Line 3: <%
    Line 4: Public Module ImageConverter
    Line 5: Public Sub Main()
    Line 6:


    Source File: G:\COMUNE\images\resize.aspx Line: 4

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 © 2026 vBulletin Solutions, Inc. All rights reserved.