domenica 22 febbraio 2026

C# trasformare un immagine in testo in una nuova immagine di tipo jpg

 

C# da immagine a testo

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);

    }

}





Nessun commento: