2010-03-31 15 views
9

Ho un'immagine che è 240x320 (immagine della fotocamera iphone in verticale) e ho bisogno di programmare a livello di codice (in C#) "barre" bianche ai lati aumentando le dimensioni dell'immagine intera a 320x320. Non voglio ridimensionare l'immagine perché ciò significherebbe compromettere le proporzioni.Spazio immagine C#

ho trovato un sacco di informazioni su come rimuovere barre bianche con C#, ma nulla su come aggiungerli. Sono in perdita. Qualcuno ha qualche input che potrebbe guidarmi nella direzione corretta?

Grazie mazzo, Brett

risposta

4

Creare un nuovo bitmap vuoto bianco delle dimensioni desiderate e blit l'immagine più piccola su di esso.

0

Fondamentalmente creare una nuova bitmap con la dimensione richiesta, cancellarla con il colore desiderato e quindi disegnare la bitmap più piccola in modo che sia centrata verticalmente.

12
using (System.Drawing.Image src = System.Drawing.Image.FromFile("picture.jpg")) 
{ 
     using (Bitmap bmp = new Bitmap(320, 320)) 
     { 
       Graphics g = Graphics.FromImage(bmp); 
       g.Clear(Color.White); 
       g.DrawImageUnscaled(src, 60, 0, 240, 320); 
       bmp.Save("file.jpg", ImageFormat.Jpeg); 
     } 
} 

Ricordare di smaltire l'oggetto dopo l'uso;)

+0

Impressionante! Grazie mille! – Brett

+0

Il codice per la risposta di @Matti. +1 per Matti !! – kenny

+4

Questo è un buon candidato per l'istruzione using per gestire lo smaltimento. E.g. utilizzando (Bitmap bmp = new Bitmap (320, 320)) { // ... } –