Passfotos
In den letzten Tagen habe ich mich mit einem anderen Projekt auseinander gesetzt. Es ging / geht darum die Bilder der Angestellten und Studierenden in ein einheitliches Format (3:4) zu bringen.
Der erste Schritt hierbei war das Anpassen des von Fabian programmierten FotoProjekts auf das Neue Format. Fotos werden nun also im Format 3:4 (Hochformat) abgespeichert. Geschossen werden sie im alten 4:3(Längs-) Format.
Die Grösste schwierigkeit war, heraus zu finden nach was ich eigendlich suchen muss.
Wenn man nach dingen wie "Bild" und "Beschneiden" sucht, findet man nur Informationen zu Bildbearbeitungsprogrammen wie den Adobe Photoshop.
Die suche nach dingen wie "Cut" oder "Crop" blieb leider auch erfolglos.
Die Lösung nennt sich "DrawImage". Bei dieser Methode kann man bei unzähligen Überladungen angeben welchen Teil des Bildes man wo in einem Bitmap "Zeichnen" will. Hier kann man einen beliebigen rechteckigen Bereich anageben, welchen man beliebig Scalieren kann und auch schräg in einem Bitmap zeichnen kann.
Image DrawImageParaRect(Image source)
{
/* Diese Methode Schneidet den mittleren Teil des bildes heraus (Entfernt die Ränder) und
* platziert diesen im Bitmap*/
Bitmap bmpNew = new Bitmap(360, 480);
// Create parallelogram for drawing image.
Point ulCorner = new Point(0, 0);
Point urCorner = new Point(360, 0);
Point llCorner = new Point(0, 480);
Point[] destPara = { ulCorner, urCorner, llCorner };
// Create rectangle for source image.
Rectangle srcRect = new Rectangle(140, 0, 360, 480);
GraphicsUnit units = GraphicsUnit.Pixel;
// Draw image to screen.
using (Graphics g = Graphics.FromImage(bmpNew))
{
g.DrawImage(source, destPara, srcRect, units);
}
return bmpNew;
}
Dies ist die Methode welche das ganze umsetzt. Als Übergabewert beim aufrufen erwartet sie ein Objekt vom typ Image (Das Bild welches im 4:3 Längsformat aufgenommen wurde)
Ein neues Bitmap im format 3:4 Hoch wird erstellt.
Point ul, ur, und ll sind die Koordinaten wo das Bild anschliessend in dem Neuen Bitmap gezeichnet wird. Die punkte welche hier angegeben werden sind upperLeft, upperRight, lowerLeft also obenLinks, obenRechts und untenLinks. Der vierte punkt (lowerRight) wird an hand der anderen berechnet.
Dann wird der Bereich angegeben welcher gezeichnet werden soll. Rectangle gibt die vier Werte an X-Achse (Abstand vom linken Bildrand), Y-Achse (abstand vom obigen Bildrand), Länge des zu zeichnenden Bereiches, Höhe des zu zeichnenden Bereiches.
Dann wird noch die Masseinheit angegeben (Pixel) und das Bild kann gezeichnet werden.
Der Rückgabewert dieser Funktion ist das Bild in Passfoto-Format (3:4 Hochformat).
Ich habe einige veränderungen am Programm vorgenommen. zB. musste ich einen neue Methode zum speichern des Bildes Schreiben und andere Methoden abändern, damit sie zu meinen Neuerungen konform sind.
Hinzu kam noch, dass ich die Berichte anpassen bzw. welche bereitstellen musste.
Ich habe also die alten Berichte dubliziert und angepasst. Zudem habe ich auch gleich einige änderungen vorgenommen welche von Urs aus der Kanzlei gewünscht waren. Die neuen berichte haben im nahmen "_3x3 BildFormat" angehängt bekommen
Die Tests sind soweit durch und der neue Fotokasten wird wohl am Freitag morgen Produktiv geschaltet.
Der erste Schritt hierbei war das Anpassen des von Fabian programmierten FotoProjekts auf das Neue Format. Fotos werden nun also im Format 3:4 (Hochformat) abgespeichert. Geschossen werden sie im alten 4:3(Längs-) Format.
Die Grösste schwierigkeit war, heraus zu finden nach was ich eigendlich suchen muss.
Wenn man nach dingen wie "Bild" und "Beschneiden" sucht, findet man nur Informationen zu Bildbearbeitungsprogrammen wie den Adobe Photoshop.
Die suche nach dingen wie "Cut" oder "Crop" blieb leider auch erfolglos.
Die Lösung nennt sich "DrawImage". Bei dieser Methode kann man bei unzähligen Überladungen angeben welchen Teil des Bildes man wo in einem Bitmap "Zeichnen" will. Hier kann man einen beliebigen rechteckigen Bereich anageben, welchen man beliebig Scalieren kann und auch schräg in einem Bitmap zeichnen kann.
Image DrawImageParaRect(Image source)
{
/* Diese Methode Schneidet den mittleren Teil des bildes heraus (Entfernt die Ränder) und
* platziert diesen im Bitmap*/
Bitmap bmpNew = new Bitmap(360, 480);
// Create parallelogram for drawing image.
Point ulCorner = new Point(0, 0);
Point urCorner = new Point(360, 0);
Point llCorner = new Point(0, 480);
Point[] destPara = { ulCorner, urCorner, llCorner };
// Create rectangle for source image.
Rectangle srcRect = new Rectangle(140, 0, 360, 480);
GraphicsUnit units = GraphicsUnit.Pixel;
// Draw image to screen.
using (Graphics g = Graphics.FromImage(bmpNew))
{
g.DrawImage(source, destPara, srcRect, units);
}
return bmpNew;
}
Dies ist die Methode welche das ganze umsetzt. Als Übergabewert beim aufrufen erwartet sie ein Objekt vom typ Image (Das Bild welches im 4:3 Längsformat aufgenommen wurde)
Ein neues Bitmap im format 3:4 Hoch wird erstellt.
Point ul, ur, und ll sind die Koordinaten wo das Bild anschliessend in dem Neuen Bitmap gezeichnet wird. Die punkte welche hier angegeben werden sind upperLeft, upperRight, lowerLeft also obenLinks, obenRechts und untenLinks. Der vierte punkt (lowerRight) wird an hand der anderen berechnet.
Dann wird der Bereich angegeben welcher gezeichnet werden soll. Rectangle gibt die vier Werte an X-Achse (Abstand vom linken Bildrand), Y-Achse (abstand vom obigen Bildrand), Länge des zu zeichnenden Bereiches, Höhe des zu zeichnenden Bereiches.
Dann wird noch die Masseinheit angegeben (Pixel) und das Bild kann gezeichnet werden.
Der Rückgabewert dieser Funktion ist das Bild in Passfoto-Format (3:4 Hochformat).
Ich habe einige veränderungen am Programm vorgenommen. zB. musste ich einen neue Methode zum speichern des Bildes Schreiben und andere Methoden abändern, damit sie zu meinen Neuerungen konform sind.
Hinzu kam noch, dass ich die Berichte anpassen bzw. welche bereitstellen musste.
Ich habe also die alten Berichte dubliziert und angepasst. Zudem habe ich auch gleich einige änderungen vorgenommen welche von Urs aus der Kanzlei gewünscht waren. Die neuen berichte haben im nahmen "_3x3 BildFormat" angehängt bekommen
Die Tests sind soweit durch und der neue Fotokasten wird wohl am Freitag morgen Produktiv geschaltet.
Comments
No new comments allowed (anymore) on this post.