Forum: ASP.NET2.0 |
Thema:
GDI+ - Grafik int .net beschneiden |
Von:
Bernhard Grojer (
30.07.2006 22:41) |
Hi
Ich möchte eine Grafik die der User uploadet beschneiden damit sie quadratisch wird. Die Grafik hat enweder hoch oder querformat. Je nachdem wird Links und Rechts oder Oben und Unten etwas abgeschnitten.
Danach speichere ich die beschnittene Grafik as JPG in der orig. Größe und dann nochmals als Thumbnail mit 180 x 180 px
Ich hab das in meiner .net Beginnzeit mal gecodet und hab hier ein FÜRCHTERLICHES Codebeispiel.
'Speichern des Upload-Images
myUpload.PostedFile.SaveAs(Server.MapPath("..\pics\") & ID & ".jpg")
myUpload.dispose()
'Bearbeitung des Bildes
Dim int_start_x
DIM int_start_y
DIM int_end_x
DIM int_end_y
DIM int_target_x
DIM int_target_y
Dim myImage as System.Drawing.Image
DIM myDumbImage AS System.Drawing.Image
Dim dummyCallBack as System.Drawing.Image.GetThumbNailImageAbort
'Beschneiden der Grafik
myImage = System.Drawing.Image.FromFile(Server.MapPath("..\pics\") & ID & ".jpg")
DIM int_width = myImage.width
DIM int_height = myImage.height
int_start_x = FIX((int_width - int_height) / 2)
int_start_y = 0
int_end_x = int_width - (2 * int_start_x)
int_end_y = int_height
int_target_x = int_width - (2 * int_start_x)
int_target_y = int_height
Dim bmpImage As Bitmap
Dim recCrop As Rectangle
Dim bmpCrop As Bitmap
Dim gphCrop As Graphics
Dim recDest As Rectangle
bmpImage = New Bitmap(myImage)
myImage.dispose()
recCrop = New Rectangle(int_start_x, int_start_y, int_end_x, int_end_y)
bmpCrop = New Bitmap(recCrop.Width, recCrop.Height, bmpImage.PixelFormat)
gphCrop = Graphics.FromImage(bmpCrop)
recDest = New Rectangle(0, 0, int_target_x, int_target_y)
gphCrop.DrawImage(bmpImage, recDest, recCrop.X, recCrop.Y, recCrop.Width, recCrop.Height, GraphicsUnit.Pixel)
bmpCrop.Save(Server.MapPath("..\pics\") & ID & ".jpg", ImageFormat.Jpeg)
Hat jemand eventuell ein vernünftiges Codebeispiel dazu? Ich hab leider nur wenig Ahnung von den fähigkeiten von System.Graphics!
Ich bin mir aber sicher, dass das maximal 10 Zeilen sein dürfen +gg+
Antworten
Vorsicht bei der Eingabe: Die Zeichen ' oder -- sind nicht erlaubt!