Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 23

Discussione: resize

  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    589

    resize

    ciao, sono a secco di asp.net non so dove mettere le mani per la qualita dell'immagine per il tumbnail automatico ecco il codice

    codice:
    <%@ Import Namespace="System.Drawing"%> 
    <%@ Import Namespace="System.Drawing.Imaging"%> 
    <SCRIPT  RUNAT="SERVER"> 
    Sub Page_Load() 
    
       Dim width as Integer = 0 
       Dim height as Integer = 0 
    
       try 
         ' ricava dimensioni dalla richiesta 
         if not Request.QueryString("width") is Nothing Then 
         width = Int32.Parse(Request.QueryString("width")) 
         End if 
         if not Request.QueryString("height") is Nothing Then 
         height = Int32.Parse(Request.QueryString("height")) 
         End if 
    
       catch ex as Exception 
       End Try 
    
       ' ridimensiona l'immagine se specificato 
       Dim immagine as String = Server.MapPath(Request("img")) 
       if Not System.Io.File.Exists(immagine) then 
         immagine = Server.MapPath("/immagini/nondisponibile.jpg") 
       end if 
       
       call ImgRedim(immagine, width, height) 
    
       ' fermo il resto della risposta 
       Response.End() 
    End Sub 
    
    ' Funzione di redim 
    Public Sub ImgRedim(immagine as String, width as Integer, height as Integer) 
       Dim bmp as System.Drawing.Bitmap = CType(System.Drawing.Image.FromFile(immagine), System.Drawing.Bitmap) 
    
       ' c'è da ridimensionare? 
       if width>0 or height>0 then 
         ' se è specificata solo la larghezza, calcola l'altezza 
         if height = 0 Then 
         height = Convert.ToInt32(width / bmp.Width * bmp.Height) 
         End if 
    
         ' (e viceversa) 
         if width = 0 Then 
         width = Convert.ToInt32(height / bmp.Height * bmp.Width) 
         End if 
    
         ' creo la Thumbnail con i parametri impostati 
         Dim miniaturabmp as New System.Drawing.Bitmap(bmp, width, height) 
    
         ' salvo sullo stream di output 
         if immagine.EndsWith(".jpg") Then 
         miniaturabmp.Save(Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg) 
         else 
         miniaturabmp.Save(Response.OutputStream, System.Drawing.Imaging.ImageFormat.Gif) 
         end if 
    
         ' pulizia 
         miniaturabmp.Dispose() 
       else 
         ' salvo sullo stream di output 
         if immagine.EndsWith(".jpg") Then 
         bmp.Save(Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg) 
         else 
         bmp.Save(Response.OutputStream, System.Drawing.Imaging.ImageFormat.Gif) 
         end if 
       end if 
    
       ' pulizia finale 
       bmp.Dispose() 
    
    End Sub 
    
    </SCRIPT>
    
    
    </p>

  2. #2
    ho il tuo stesso prob. aiutateci!!!

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    99
    Volete fare un upload e un tumb in automatico dell'imagine quando la uplodate?

    io faccio cosi:

    Creao una sezione Admin:
    Dove faccio il mio Upload dell'immagine e creao in automatico la tumb

    codice:
    Imports System.IO
    
        Sub GeneraTumbnail(ByVal path As String, ByVal img As String, ByVal dimensione As Short, ByVal NameTumb As String)
            Dim objImage, objThumbnail As System.Drawing.Image
            Dim strFilename As String
            Dim nomeFile As String
            Dim shtWidth, shtHeight As Short
    
            strFilename = path & img
            nomeFile = Server.MapPath("\" & NameTumb)
            shtWidth = dimensione
            Try
                objImage = objImage.FromFile(strFilename)
            Catch
                Response.Write("Errore Creazione tumb")
            End Try
    
            If shtWidth = Nothing Then
                shtWidth = objImage.Width
            ElseIf Request.QueryString("width") < 1 Then
                shtWidth = 100
            Else
                shtWidth = Request.QueryString("width")
            End If
            shtHeight = objImage.Height / (objImage.Width / shtWidth)
            objThumbnail = objImage.GetThumbnailImage(shtWidth, shtHeight, Nothing, System.IntPtr.Zero)
            'Tipo di file generato 
            Response.ContentType = "image/jpeg"
            objThumbnail.Save(nomeFile, Imaging.ImageFormat.Jpeg)
            ImgPreview.ImageUrl = nomeFile
    
            Label2.Text = "Tumb creata con successo  ^_^  in " & nomeFile & ""
    
            objImage.Dispose()
            objThumbnail.Dispose()
        End Sub
        Private Sub Button1_ServerClick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.ServerClick
            Dim estensione As String
            Dim MaxByte As Short
            Dim percorso As String
            Dim TumbName As String
    
            'set i valori
            MaxByte = 1
            estensione = ".jpg"
            percorso = Server.MapPath("\")
            TumbName = "Tumb" & Path.GetFileName(Text1.Value) & estensione
    
            If Text1.Value = "" Then
                Label1.Text = "Attenzione:Devi inserire il nome del file"
                Return
            End If
    
            If Not IsNothing(File1.PostedFile) Then
                Dim filepath As String = Path.Combine(percorso, Path.GetFileName(Text1.Value) & estensione)
                Try
                    File1.PostedFile.SaveAs(filepath)
                    Label1.Text = "File upload con successo ^_^  in " & filepath & ""
                    GeneraTumbnail(percorso, Path.GetFileName(Text1.Value) & estensione, MaxByte, TumbName)
                Catch Exc As Exception
                    Label1.Text = "Errore nel salvataggio del file  " & filepath & "
    " & Exc.ToString()
                End Try
            End If
    
        End Sub
    'manca la connesione al db per fare insert della url immagine e Tumb ..comunque è una cosa semplice

    'Nella pagina aspx

    Nn faccio altre che Aprire il DB caricare in un datalist con al suo interno ei imagebutton , al quale passo il valore della mia Tumb
    e quando ci clicci nn fai altro che fargli aprire un PopUp con indirizzo del URl dell'imagine ...

    Se ho capito cosa volevate..

    Nn vi conviene avere un immagine fargli la tumb durante la visualizzazione , ma farlo mentre uplodate immagine sul server e nel db

    'Questo codice crea un tumb vera e proprie nn ridimensione immagine e baste nei pixel , se lo farete andare vi accorgerete che le dimensioni della tumb è diversa da quella dell'immagine orginale.

  4. #4
    Ti ringrazio per l'intervento ma non è esattamente ciò di cui avevamo bisogno. Ciò che si chiede è come gestire la qualità di compressione del thumbnail.

    teoricamente agendo su queste righe rispettivamente

    miniaturabmp.Save(Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg)

    objThumbnail.Save(nomeFile, Imaging.ImageFormat.Jpeg)

    mi sono spiegato? puoi aiutarci?
    a questo url http://www.artedelcorpo.com/minisito.asp?id=1 c'è un esempio del code in questione applicato al mio portale.

    come puoi notare la qualità delle miniature è scadente. non è possibile gestirla? aumentarla?

    grazie infinite

  5. #5
    Utente di HTML.it L'avatar di cassano
    Registrato dal
    Aug 2004
    Messaggi
    3,002
    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 sempre questa lo presa da un gran bel libro.

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    99
    come puoi notare la qualità delle miniature è scadente. non è possibile gestirla? aumentarla?

    grazie infinite
    tanto per sapere cosa intendi per scadenti? che nn si vedono chiare?

    Sincermanete nn vedo che le tue tumb hanno qualità scadente anzi..si vedono molto bene scusa..
    nn puoi fare un tumb con un qualita enorme se no ti pesa del immagine orignale o ci vai vicino e la pagina diventa lenta nel caricarla ..
    cosi come ho visto io le tue tumb sono perfette i tatuaggi si vedo chiari ....

  7. #7
    Ti ringrazio molto ma confronta queste http://www.artedelcorpo.com/minisito.asp?id=1 create con aspx e queste http://www.artedelcorpo.com/galleria.asp create in modo statico da me personalmente. C'è un abisso.

    ecco non si può con aspx raggiungere la qualità del secondo caso?

    grazie di cuore, Michele

  8. #8
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    99
    Fai cosi ora cerco qualcosa..intanto sai che mi viene in mente...
    che tu imposti il size max quando ti crei la tumb fai in modo che il size max si di 20Kb e pure quello minimo 20kb cosi lui ti fa una tumb con qualità superiore ..infatti
    la tumb di spiderman + di 12Kb le altre di 3Kb la differenza sta nella qualita tu prova e fammi sapere

  9. #9
    Ottima idea... Solo non trovo il comando per settare size min e size max! Saresti così gentile da suggerirmeli? Ti passo anche il code (molto semplice) della mia pagina. Grazie mille.
    codice:
    <%@ Page Language="C#" %>
    <%@ import Namespace="System.Drawing" %>
    <%@ import Namespace="System.Drawing.Imaging" %>
    <%@ import Namespace="System.Text.RegularExpressions" %>
    <script runat="server">
    
        System.Drawing.Image oldImage, newImage;
    
        void Page_Load(Object sender, EventArgs e) {
            if ( Request.QueryString["FileName"] != null ) {
                string strFileName = Convert.ToString(Request.QueryString["FileName"]);
                if ( strFileName != "" ) {
                    try {
                        oldImage = System.Drawing.Image.FromFile( Server.MapPath("public/minisito/"+Request.QueryString["id"]+"/"+strFileName) );
    
    			if ( oldImage.Width > oldImage.Height ) {
                            newImage = oldImage.GetThumbnailImage( 120, 90, null, IntPtr.Zero);
    			} else {
    			newImage = oldImage.GetThumbnailImage( 90, 120, null, IntPtr.Zero);
    			}
                            Response.ContentType = "image/jpeg";
                            newImage.Save(Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg);
                            oldImage.Dispose();
                            newImage.Dispose();
                            oldImage = null;
                            newImage = null;
                      
                    } catch (Exception ex) {
                        Response.Write(ex.Message);
                    }
                }
            }
        }
    
    </script>

  10. #10
    Io avrei trovato qualcosa

    Metodo Image.Save (Stream, ImageCodecInfo, EncoderParameters)

    solo che non so quali parametri passare come secondo e terzo.
    le ho provate tutte ma nulla. però è questo il frammento di codice che gestisce la qualità.

    qualcuno ne sa qualcosa???

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.