In questo frammento di codice nel linguaggio di programmazione C#, vedremo come trasformare un file immagine di tipo Jpg, in una nuova immagine formato testo.
Il progetto è di tipo Windows Application.
L'immagine originale verrà trasformata in un testo, utilizzando le classi presenti nello spazio dei nomi System.Drawing .
Di seguito la funzione per ottenere un oggetto di tipo ImageCodecInfo.
C#
private ImageCodecInfo GetEncoder(ImageFormat format)
{
ImageCodecInfo[] codecs = ImageCodecInfo.GetImageDecoders();
foreach (ImageCodecInfo codec in codecs)
{
if (codec.FormatID == format.Guid)
{
return codec;
}
}
return null;
}
Di seguito il codice nell'evento click del pulsante, per generare la nuova immagine.
C#
private void BtnScrittaJpg_Click(object sender, EventArgs e)
{
try
{
//Percorso dell'immagine originale
string percorsoImmagine = @"C:\varie\panchina.jpg";
//Percorso della nuova immagine in formato jpg
string percorsoNuovaImmagine = @"C:\varie\panchinaTesto2b.jpg";
//Oggetto per l'immagine originale
Bitmap immagine = new Bitmap(percorsoImmagine);
//Creo un nuovo oggetto di tipo bitmap con lo stesso
formato
Bitmap nuovaImmagine = new Bitmap(immagine.Width, immagine.Height);
//Creo un oggetto Graphics per disegnare sulla nuova
immagine
Graphics g = Graphics.FromImage(nuovaImmagine);
//Imposto lo sfondo trasparente
g.Clear(Color.Transparent);
//Oggetto Font per la scritta
Font font = new Font("Arial", 50, FontStyle.Bold);
//Oggetto Brush per la scritta
Brush brush = new SolidBrush(Color.White);
//Larghezza ed altezza della scritta
SizeF size = g.MeasureString("Emanuele", font);
//Definisco la posizione della scritta
float x = (nuovaImmagine.Width - size.Width)
/ 2;
float y = (nuovaImmagine.Height - size.Height)
/ 2;
//Oggetto GraphicsPath per la scritta
GraphicsPath path = new GraphicsPath();
path.AddString("Emanuele", font.FontFamily, (int)font.Style, font.Size, new PointF(x, y), StringFormat.GenericDefault);
//Imposto la modalità di ritaglio
g.SetClip(path);
//Disegno l'immagine originale sulla nuova immagine
g.DrawImage(immagine, 0, 0);
//Salvo la nuova immagine in formato JPEG
ImageCodecInfo jgpEncoder = GetEncoder(ImageFormat.Jpeg);
System.Drawing.Imaging.Encoder objEncoder = System.Drawing.Imaging.Encoder.Quality;
EncoderParameters objEncoderParameters = new EncoderParameters(1);
EncoderParameter objEncoderParameter = new EncoderParameter(objEncoder, 90L);
objEncoderParameters.Param[0] = objEncoderParameter;
nuovaImmagine.Save(percorsoNuovaImmagine, jgpEncoder, objEncoderParameters);
MessageBox.Show("Immagine creata e salvata in " + percorsoNuovaImmagine);
}
catch (Exception ex)
{
MessageBox.Show("Errore durante il salvataggio:\n" + ex.Message);
}
}