Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1

    Ecco un Image Resize di Qualità in asp.net

    Salve a tutti,
    ho visto che ultimamente si parla molto di ridimensionamento di immagini in .net e ho visto che le soluzioni proposte sono decine, alcune anche molto ben fatte.

    Un problema comune che ho riscontrato sta nella qualità delle immagini ridimensionate che spesso vengono sgranate. Il problema dipende dalla funzione di interpolazione usate, che di default in gdi è quella lineare.

    Vi invito a leggere questo post Ridimensionare Immagini con VB.NET e GDI per la spiegazione e il codice necessario per effettuare l'interpolazione bicubica con gdi.
    In quel post ho messo anche un confronto tra un'immagine ridimensionata con l'interpolazione lineare e una con l'iterpolazione bicubica.

    Per chi fosse interessato ho pubblicato anche una dll in .net fatta da me proprio per semplificare queste operazioni. Trovate la spiegazione qui Una Classe in .NET per la gestione delle immagini

    Visual Basic e Dintorni
    Blog sullo sviluppo Web in generale

  2. #2
    Utente di HTML.it L'avatar di cassano
    Registrato dal
    Aug 2004
    Messaggi
    3,002
    ottimo grazie bel lavoro....

  3. #3
    Interessante :master:
    Io generalmente faccio un resample puro e semplice
    perchè passo da immagini gigantesche (fotocamere
    da 4/5/7 MegaPixel) a formato più piccolo e generalmente
    riduco l'originale a 1600x1200 creo un'immagine (che
    definisco a bassa risoluzione) 800x600 e la relativa
    thumbnail 150x150.
    Ovviamente tenendo conto delle proporzioni dell'immagine.
    non mi sono preoccupato della loro qualità (spece delle
    thumbnails) per che hanno lo solo scopo indicativo

    Comunque sia Bel lavoro

    Richard B. Riddick : "Non avrete mica paura del buio?"

    Scusatemi ma sono mesi che non pago piu' la bolletta della luce....

  4. #4
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Da quello che si legge in rete, si sa che la microsoft ha privilegiato la velocità piuttosto che la qualità nella manipolazione di immagini.
    Ed è risaputo che per ottenere più qualità bisogna impostare:

    HighQualityBicubic per InterpolationMode,

    HighQuality per SmoothingMode,

    HighQuality per PixelOffsetMode,

    HighQuality per CompositingQuality

    :master: non so se dimentico qualcosa


    sempre poi leggendo in rete, sembra che questo sia un modo abbastanza elementare per la manipolazione di immagini, superato da altri algoritmi o filtri di cui, purtroppo non so nulla

    Questo solo per affermare che noi di questo forum non siamo poi così tanto scarsi da non sapere queste cose
    Pietro

  5. #5
    Non dubito delle capacità e delle conoscenze di nessuno, speravo solo di essere utile a qualcuno presentando qui una problematica che mi sono trovato ad affrontare in prima persona.

    Il fatto che microsoft abbia privilegiato la velocità alla qualità non significa che anche poi gli utilizzatori delle sue classi debbano farlo. Io tra le due scelgo la qualità.

    Per quanto riguarda GDI, sicuramente esistono delle classi migliori e più performanti ma se non altro questa è gratuita e facile da usare.
    Visual Basic e Dintorni
    Blog sullo sviluppo Web in generale

  6. #6
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Originariamente inviato da simo
    Non dubito delle capacità e delle conoscenze di nessuno, speravo solo di essere utile a qualcuno presentando qui una problematica che mi sono trovato ad affrontare in prima persona.

    Il fatto che microsoft abbia privilegiato la velocità alla qualità non significa che anche poi gli utilizzatori delle sue classi debbano farlo. Io tra le due scelgo la qualità.

    Per quanto riguarda GDI, sicuramente esistono delle classi migliori e più performanti ma se non altro questa è gratuita e facile da usare.
    Non prendertela. Sono totalmente daccordo con te su privilegiare la qualità piuttosto che la velocità. E sono anche consapevole che per fare il tuo codice hai studiato e risolto bene.
    Ciao
    Pietro

  7. #7
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    ho visto il codice della classe: hai un esempio di codice di utilizzo?
    Pietro

  8. #8
    Codice per un'applicazione Windows con anteprima dell'immagine ridimensionata in una picturebox e salvataggio differito.
    codice:
        Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
            Dim x As New ArtLabs.Pictures.Engine
            Dim ImmagineGrande As Bitmap
    
            ImmagineGrande = New Bitmap("C:\percorsofile.jpg")
    
            PictureBox1.Image = x.ResizeImage(ImmagineGrande, New Size(200, 300), True)
    
            x.SaveToDisk(PictureBox1.Image, "c:\percorsodidestinazione.jpg", System.Drawing.Imaging.ImageFormat.Jpeg, 100)
    
            x.Dispose()
            x = Nothing
    
        End Sub
    Codice per un'applicazione web con ridimensionamento e salvataggio immediato della foto.
    codice:
        Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
            Dim x As New ArtLabs.Pictures.Engine
    
            x.ResizeToFile(Server.MapPath("/images/big/foto.jpg"), Server.MapPath("/images/small/foto.jpg"), _
            New System.Drawing.Size(300, 300), _
            System.Drawing.Imaging.ImageFormat.Jpeg, _
            True, 100)
    
            x.Dispose()
            x = Nothing
        End Sub
    In quella classe esistono diversi "metodi" per il trattamento dell'immagine e il relativo salvataggio.
    Visual Basic e Dintorni
    Blog sullo sviluppo Web in generale

  9. #9
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    1
    Ciao simo,
    in primis m'è d'obbligo farti i compliementi per il tuo lavoro! Davvero utilissima la tua classe!

    Ora, io non sono pratico di asp.net ma debbo implementare un "upload and resize" in un'applicazione asp.
    Vorrei utilizzare la tua classe richiamandola da un aspx a cui passo i valori tramite querystring.

    Ho fatto qualche semplicissima prova per cominciare a capire come usare il tuo componente:

    <%@ Page Language="VB" ContentType="text/html" ResponseEncoding="ISO-8859-1" %>
    <%@ Import Namespace="ArtLabs.Pictures" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <script runat="server">
    Dim x As New ArtLabs.Pictures.Engine
    x.ResizeToFile(Server.MapPath("/images/foto.jpg"), Server.MapPath("/images/foto2.jpg"), New System.Drawing.Size(300, 300), System.Drawing.Imaging.ImageFormat.Jpeg, True, 100)
    x.Dispose()
    x = Nothing
    </script>

    ma mi restituisce il seguente errore:

    Errore di compilazione
    Descrizione: Errore durante la compilazione di una risorsa necessaria per soddisfare la richiesta. Rivedere i dettagli relativi all'errore e modificare in modo appropriato il codice sorgente.

    Messaggio di errore del compilatore: BC30188: Prevista dichiarazione.

    Errore nel codice sorgente:

    Riga 7: Dim x As New ArtLabs.Pictures.Engine
    Riga 8:
    Riga 9: x.ResizeToFile(Server.MapPath("/images/foto.jpg"), Server.MapPath("/images/foto2.jpg"), New System.Drawing.Size(300, 300), System.Drawing.Imaging.ImageFormat.Jpeg, True, 100)
    Riga 10: x.Dispose()
    Riga 11: x = Nothing


    File di origine: D:\SitiWeb\andini.it\Untitled-2.aspx


    Cosa sbaglio?

  10. #10
    Per utilizzare la classe devi:
    - copiarla nella cartella bin del tuo sito;
    - aggiungere un riferimento alla dll dal menu website > add reference di visual studio.

    Ecco il codice di una pagina funzionante appena testata:
    codice:
    <%@ Page Language="VB" ContentType="text/html" ResponseEncoding="ISO-8859-1" %>
    <%@ Import Namespace="ArtLabs.Pictures" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <script runat="server">
        Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
            Dim x As ArtLabs.Pictures.Engine
            x = new ArtLabs.Pictures.engine
            
            x.ResizeToFile(Server.MapPath("images/foto.jpg"), Server.MapPath("images/foto2.jpg"), New System.Drawing.Size(300, 300), System.Drawing.Imaging.ImageFormat.Jpeg, True, 100)
            x.Dispose()
            x = Nothing
        End Sub
    </script>
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <title>ImageResize</title>
    </head>
    <body>
    <div>
    Fatto!
    </div>
    </body>
    </html>
    Visual Basic e Dintorni
    Blog sullo sviluppo Web in generale

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.