\\ Pensando.it : Pensiero
Classifica Flickr, da oggi disponibile anche il badge creator
Di etrusco (del 11/04/2008 @ 16:58:54, in flickr, linkato 1846 volte)
Voti: 1 Media: 10 Vota cliccando sulle stelline! 

Visto il discreto successo di utenti flickr in relazione al tool classifica flickr, mi sono cimentato in una nuova funzionalità... il badge creator!

Cosa è il badge creator?

E' una semplice (non molto) applicazione fatta in ASP.NET 2.0 che consente, dato un group_id flickr, di generare un badge ossia una immagine contenente le cinque immagini migliori nel mese corrente per il gruppo flickr in questione.

Ad esempio per il gruppo che io e Mago gestiamo (l'ho reso amministratore....hihihihi) nikon d40x italia il badge è il seguente:

Chi utilizza frequentemente Flickr saprà che di badge di questo tipo ce ne sono moltissimi e mostrano tutti informazioni in real-time sul gruppo, ad esempio interessanti ed usatissimi sono i badge di flickriver e bighugelabs.

Vediamo qualche riga di codice dell'applicazione .NET

In primis, per lavorare con le immagini, è necessario utilizzare i seguenti namespace:

using System.Drawing;
using System.Drawing.Imaging;
using System.Drawing.Drawing2D;

L'idea è la seguente, invocare la flickr API per ottenere la classifica delle immagini sotto forma di stream, caricare tale stream in oggetti di tipo Bitmap, copiare ed incollare tale oggetti in modo tale da ottenere una immagine definitiva come quella mostrata sopra.

La parte a mio avviso più interessante è quella relativa al load delle immagini, ho utilizzato il seguente metodo:

public Bitmap LoadPicture(string urlImage)
{
HttpWebRequest wreq;
HttpWebResponse wresp = null;

// Definizione dello stream per carpire l'immagine
System.IO.Stream streamImage = null;

// definizione di un bitmap che costituisce il valore di ritorno
Bitmap bmpImage = null;
// contatto con il web
wreq = (HttpWebRequest)WebRequest.Create(urlImage);
// impostiamo la proprietà necessaria per la creazione dello stream
wreq.AllowWriteStreamBuffering = true;
// richiesta dell'immagine
wresp = (HttpWebResponse)wreq.GetResponse();

// in caso di risposta positiva
if ((streamImage = wresp.GetResponseStream()) != null)
bmpImage = (Bitmap)System.Drawing.Image.FromStream(streamImage);
if (streamImage != null)
streamImage.Close();
if (wresp != null)
wresp.Close();
return (bmpImage);
}

In definitiva dato un URL di una immagine Flickr (che si ottiene invocando le API) la prima cosa da fare è convertire tale stream in oggetto Bitmap.

Una volta effettuata tale conversione, per creare l'immagine di cui sopra è necessario fare le seguenti operazioni:

caricare la bitmap in un oggetto di tipo Image:

System.Drawing.Image oImg = (System.Drawing.Image)LoadPicture(urlPhoto);

Aver preventivamente definito un oggetto di tipo Bitmap che rappresenta la nostra Bitmap di lavoro e un oggetto di tipo Graphics con il quale effettuare i vari copia, incolla etc...:

Bitmap oBmp = new Bitmap(400, 140, PixelFormat.Format24bppRgb);
Graphics oGrp = Graphics.FromImage(oBmp);

Effettuare operazioni di pulizia e riempimento dell'immagine:

oGrp.SmoothingMode = SmoothingMode.AntiAlias;
oGrp.TextRenderingHint = TextRenderingHint.AntiAlias;
SolidBrush oBrush = new SolidBrush(Color.White);
oGrp.FillRectangle(oBrush, 0, 0, 400, 140);

oGrp.Clear(Color.White);

Disegnare l'immagine ottenuta dal Web:

oGrp.DrawImage(oImg, 10, 30, 75, 75);

Scrivere del testo:

PointF oPoint1 = new PointF(10, 105);
oGrp.DrawString("#1", oFont, oBrushText, oPoint1);

Ed infine salvare l'immagine in formato .Bmp

oBmp.Save(Server.MapPath(@"..\public\flickr\badge\" + group_id + ".bmp"), System.Drawing.Imaging.ImageFormat.Bmp);

Questa parte mi ha fatto penare molto in quanto avrei voluto utilizzare il seguente metodo:

Response.ContentType = "image/jpeg";
oBmp.Save(Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg);

Con il quale si ottiene direttamente una immagine come Output dello stream ma la qualità, rispetto al salvarla in Bmp su disco, era decisamente inferiore.

Articolo Pensiero  Storico Storico Stampa Stampa   Bookmark and Share

Technorati tag  bitmap; classifica; flickr; immagine; stream;

Potrebbero interessarti anche i seguenti articoli affini....





I commenti sono disabilitati.

Top 5 su pensando.it

I più letti di sempre
 Rinegoziare un mutuo, ..
 Nietzsche e l'elogio d..
 Lost quinta e sesta se..
 4geek Medley HMR-500 -..
 anoressia e bulimia.....
I più letti del mese
 Ratatouille atto primo..
 Nietzsche e l'elogio d..
 anoressia e bulimia.....
 Rinegoziare un mutuo, ..
 4geek Medley HMR-500 -..
I più commentati
 4geek Medley HMR-500 -..
 plugin tagCloud 2.2.0 ..
 Rinegoziare un mutuo, ..
 Quanto sono utile? Qua..
 Pensando.it e lo spam ..
I più votati
 Harry Potter e il prin..
 plugin vota articolo 1..
 Lost quinta e sesta se..
 Rinegoziare un mutuo, ..
 Nietzsche e l'elogio d..

TagClouds

Un articolo a caso

url rewriting su pensando.it
...letto 1509 volte

Articoli Presenti

Ultimi commenti
  googlefwrnzi.com,htt...
09/05/2012 @ 17:46:21
Di Pandora Charms
  googledcucme.com,htt...
09/05/2012 @ 17:28:26
Di 2012 Jordan pascher
  googlepcyxic.com,htt...
09/05/2012 @ 16:35:25
Di Moncler Speichern Online
  hzmkfof
09/05/2012 @ 16:20:06
Di Bad Credit Loans
  googledopdmq.com,htt...
09/05/2012 @ 15:31:51
Di Timberland Footwear


Chi Sono

chi sono
Etrusco
La ragione umana viene afflitta da domande che non può respingere, perché le sono assegnate dalla natura della ragione stessa, e a cui però non può neanche dare risposta, perché esse superano ogni capacità della ragione umana

Immanuel Kant

Cerca

Feed Rss


Le mie foto su Flickr

Le mie Foto
www.flickr.com

Album Fotografici

Trovati 6 Album

Sondaggi

Ti piace la nuova grafica di pensando.it?

 Eccezionale, complimenti!
 Si, molto carina e ben curata.
 Non molto, potevi fare di meglio.
 Oddio...ma chi ha avuto questa terribile idea?
 non so, non rispondo.

Utenti on-line

Ci sono 9 persone collegate

Stuff






PageRank Checking Icon

BlogRoll


Informazioni


18/05/2012 @ 2.37.54
script eseguito in 906 ms