Home flickr Classifica Flickr, da oggi disponibile anche il badge creator

Classifica Flickr, da oggi disponibile anche il badge creator

6 min di lettura
4
0
85

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:

Month’s top five in real time – group nikon d40x italy

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.

Ti è piaciuto il mio articolo?

Ricevi tutte le novità dell'etrusco direttamente nella tua casella di posta

Non preoccuparti, non faccio spam!

è Solution Architect e Full Stack Developer specializzato nell’analisi, progettazione e realizzazione di sistemi complessi in ambito Transportation. Dal 2007 è anche blogger con il nickname "etrusco" che ha associato alla sua brand identity; cura personalmente i contenuti di molti altri blog, website e forum. Ha inoltre realizzato molte webapp e siti di ecommerce. La passione per internet, per i nuovi media e per la tecnologia in generale gli permettono di stare sempre al passo con i nuovi linguaggi e le più innovative metodologie di programmazione. Adora sua moglie, le sue due figlie, la fotografia analogica e questo blog.

Carica più articoli correlati
Carica più per Alessandro De Marchi
Carica più in flickr

4 Commenti

  1. acor3

    11 aprile 2008 a 17:20

    orca zozza famo le cose ingrande.. eh ?

  2. Alex

    11 aprile 2008 a 17:29

    Fico no?….ciao ; - )

  3. […] Poi la cosa iniziò a destare interesse nel mondo dei “flickeriani” cosi decisi di fare un badge dinamico ossia generare una immagine che contenesse in real-time le cinque migliori immagini del mese in […]

  4. […] […]

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Guarda anche

idee regalo da donna: le migliori occasioni per un natale senza pensieri

Idee regalo da donna: le migliori occasioni per un natale senza pensieri Il Natale si sta …