74 messaggi dal 06 settembre 2002
salve,
utilizzo C# per creare immagini di anteprima di un'immagine inviata da un utente.

Questa è l'istruzione che uso:

Bitmap img=new Bitmap(m_bmpRepresentation, new Size(Width,Height));

dove:
m_bmpRepresentation --> bitmap dell'immagine inviata
width, height --> dimensioni dell'anteprima

funziona tutto, ma la qualità dell'anteprima è veramente tremenda!
Per usare un linguaggio tecnico-scientifico l'anteprima viene "schiccolata". Veramente Brutta.

Esiste un modo per ottenere delle anteprime un pochino più "fini"?

Grazie di cuore alla comunità.
Il fatto è ke dipende da come la butti fuori, la salvi, usi l'outputstream? con che formato? Metti un po' di codice

Ciao

Il mio blog
Homepage
74 messaggi dal 06 settembre 2002
posto che sia "img_path" il percorso dove voglio salvare l'immagine, salvo l'iimagine originale invoata dall'utente con la seguente:

immagine_path.PostedFile.SaveAs(img_path);

l'immagine così salvata viene caricata in forma di bmp dal server mediante la seguente:

Bitmap m_bmpRepresentation = new Bitmap(strImageFile, false);

dove strIMageFIle è, ovviamente, il percorso del file sul server.

dopo chiamo una funzione resize_and_save

public void ResizeAndSave(int Width, int Height, string FileName, ImageFormat FileFormat) { ...

che si fa due calcoli sulle proporzioni dell'immagine originale, e crea l'immagine thumb

Bitmap img=new Bitmap(m_bmpRepresentation, new Size(Width,Height));

il bitmap viene quindi salvata mediante la seguente:

img.canvas.Save(FileName,FileFormat);


-----------------------------------------------

Modificato da Lupo il 17 dicembre 2002 15.35 -
68 messaggi dal 05 dicembre 2002
www.tecnohome.it
perche non provi ad usare la proprieta getthumbnailimage di system.drawing.image class
ecco un esempio, qui sto usando la proprieta getthumbnailimage e poi lo salvo come jpg. Il codice e vb.net pero la poi sempliciamente modificare a C# senza problemi :)

imports system.drawing
dim MyimageBeforeReisze as system.drawing.image
dim MyimageAfterResize as system.drawing.image
MyimageBeforeReisze = MyimageBeforeReisze.fromfile(il_path_con_il_filename)
MyimageAfterResize = MyimageBeforeResize.GetThumbnailImage(Nuovowidth,Nuovoheight, Nothing, New System.IntPtr())
Response.contenttype = "image/jpeg"
MyimageAfterResize.Save(response.outputstream, imaging.imageformat.jpeg)







Alessandro
MCP
11.886 messaggi dal 09 febbraio 2002
Contributi
Mi intrufolo nella conversazione...

è possibile specificare i "parametri di salvataggio" per uno specifico formato? Mi spiego meglio:

Come tutti sanno è le immagini JPG possono essere salvate con un certo fattore di compressione. Questo parametro può essere impostato con asp.net? Oppure la nuova immagine eredita la compressione dell'immagine sorgente?

Lo stesso vale per le gif: si può decidere se salvarle con righe normali o interlacciate? E le gif animate?

Tutto questo è solo a titolo informativo... in realtà è già fantastico che in asp.NET ci sia un intero namespace per la manipolazione delle immagini.
Grazie a tutti ^__^

Enjoy learning and just keep making
Il problema non deriva dal fatto che usa il metodo Thumbnail o crea una nuova immagine ridimensionata come c'era nel mio script.
Il problema è dovuto al fatto che manda l'immagine in output.
Il metodo save ha un terzo paramentro, EncoderParameters
http://msdn.microsoft.com/library/en-us/cpref/html/frlrfSystemDrawingImageClassSaveTopic4.asp
Devi lavorare su quello.
Es:
http://msdn.microsoft.com/library/en-us/cpref/html/frlrfSystemDrawingImagingEncoderClassQualityTopic.asp
Cmq se vedi bene, nel mio script, non ricarico l'immagine, ma uso lo stream caricato così spreco di meno

Ciao

Il mio blog
Homepage
68 messaggi dal 05 dicembre 2002
www.tecnohome.it
oops, ha ragione ricciolo :P
questo del Encoder.Quality Field mi e nuova, ho imparato una cosina anchio :)

Alessandro
MCP
74 messaggi dal 06 settembre 2002
Ricciolo ha scritto:
Il problema non deriva dal fatto che usa il metodo Thumbnail o crea una nuova immagine ridimensionata come c'era nel mio script.
Il problema è dovuto al fatto che manda l'immagine in output.
Il metodo save ha un terzo paramentro, EncoderParameters
http://msdn.microsoft.com/library/en-us/cpref/html/frlrfSystemDrawingImageClassSaveTopic4.asp
Devi lavorare su quello.
Es:
http://msdn.microsoft.com/library/en-us/cpref/html/frlrfSystemDrawingImagingEncoderClassQualityTopic.asp
Cmq se vedi bene, nel mio script, non ricarico l'immagine, ma uso lo stream caricato così spreco di meno


-----------------------
Ti sono veramente grato...
Sono riuscito, in qualche modo, ad interpretare il codice che hai postato ed adesso sono in grado di impostare la qualità delle mie anteprime...
ma...
se provo a salvare l'immagine in formato gif vien fuori una zozzeria!

myImageCodecInfo = GetEncoderInfo("image/gif");

in formato jpeg, invece, tutto ok...
non è che mi puoi dare un'altra dritta? ehm...
Comunque grazie veramente di cuore. A tutti!!!!!

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.