Windows Azure Cloud Storage ermöglicht es Ihnen bereits ab 0,10€ pro GB/Monat die Vorteile der Cloud zu nutzen.
Willkommen bei dotnet-snippets.de! Snippet hinzufügen Login Registrieren
Snippets in der Datenbank: 1551 | Anzahl registrierter User: 1841 | Besucher online: 343
Hauptmenü
Home
Top Ten
Zufälliger Snippet
FAQs
.NET Community
dotnet-forum.de
dotnet-kicks.de
Social

RSS Feeds
Rss Alle Snippets
Rss C#
Rss VB.NET
Rss C++
Rss ASP.NET
Partner
Member of Microsoft Community Leader/Insider Program (CLIP)

Bilder verkleinern, beschneiden und beides gleichzeitig


Autor: Jan Welker
Sprache: C#
Bewertung: 9
(1 Bewertung)
Anzahl der Aufrufe: 8612
  
Kick it on dotnet-kicks.de  

Beschreibung:

Dieser Snippet ist eine Übersetzung des Snippets von Chris_Cluss nach C# (http://dotnet-snippets.de/dns/resizecrop-und-beides-gleichzeitig-von-images-SID1169.aspx)

Die Klasse bietet 3 Methoden um Bilder zu beschneiden und zu verkleinern.

Der zurückgegebene MemoryStream kann mit folgendem Code wieder in ein Image gewandelt werden:

Image image = Image.FromStream(memoryStream);




Abgelegt unter: Image, Bitmap, Bild, beschneiden, verkleinern, crop, resize.



C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Drawing.Imaging;
using System.IO;

public class ImageFunctions
{
    /// <summary>
    /// Crops the and resize image.
    /// </summary>
    /// <param name="img">The image</param>
    /// <param name="targetWidth">Width of the target.</param>
    /// <param name="targetHeight">Height of the target.</param>
    /// <param name="x1">The position x1.</param>
    /// <param name="y1">The position y1.</param>
    /// <param name="x2">The position x2.</param>
    /// <param name="y2">The position y2.</param>
    /// <param name="imageFormat">The image format.</param>
    /// <returns>MemoryStream of the cropped and resized image.</returns>
    public MemoryStream CropAndResizeImage(Image img, int targetWidth, int targetHeight, int x1, int y1, int x2, int y2, ImageFormat imageFormat)
    {
        var bmp = new Bitmap(targetWidth, targetHeight);
        Graphics g = Graphics.FromImage(bmp);

        g.InterpolationMode = InterpolationMode.HighQualityBicubic;
        g.SmoothingMode = SmoothingMode.HighQuality;
        g.PixelOffsetMode = PixelOffsetMode.HighQuality;
        g.CompositingQuality = CompositingQuality.HighQuality;

        int width = x2 - x1;
        int height = y2 - y1;

        g.DrawImage(img, new Rectangle(0, 0, targetWidth, targetHeight), x1, y1, width, height, GraphicsUnit.Pixel);

        var memStream = new MemoryStream();
        bmp.Save(memStream, imageFormat);
        return memStream;
    }

    /// <summary>
    /// Resizes the image.
    /// </summary>
    /// <param name="img">The image</param>
    /// <param name="targetWidth">Width of the target.</param>
    /// <param name="targetHeight">Height of the target.</param>
    /// <param name="imageFormat">The image format.</param>
    /// <returns>MemoryStream of the resized image.</returns>
    public MemoryStream ResizeImage(Image img, int targetWidth, int targetHeight, System.Drawing.Imaging.ImageFormat imageFormat)
    {
        return CropAndResizeImage(img, targetWidth, targetHeight, 0, 0, img.Width, img.Height, imageFormat);
    }

    /// <summary>
    /// Crops the image.
    /// </summary>
    /// <param name="img">The image</param>
    /// <param name="x1">The position x1.</param>
    /// <param name="y1">The position y1.</param>
    /// <param name="x2">The position x2.</param>
    /// <param name="y2">The position y2.</param>
    /// <param name="imageFormat">The image format.</param>
    /// <returns>MemoryStream of the cropped image.</returns>
    public MemoryStream CropImage(Image img, int x1, int y1, int x2, int y2, System.Drawing.Imaging.ImageFormat imageFormat)
    {
        return CropAndResizeImage(img, x2 - x1, y2 - y1, x1, y1, x2, y2, imageFormat);
    }
}
Sie haben Fragen zu diesem Snippet oder brauchen Hilfe bei der .NET Entwicklung?
Freundliche und kompetente Entwickler helfen Ihnen gern weiter im Forum für .NET Entwicklung.



Kommentare:
(Zum Schreiben von Kommentaren bitte anmelden.)

Chris_Cluss schrieb am:  05.07.2009 23:09:06

He he he ... den Fehler hast Du mit konvertiert ;-)
Zeile 36
falsch: bmp.Save(memStream, ImageFormat.Png);
richtig: bmp.Save(memStream, ImageFormat);
Jan Welker schrieb am:  06.07.2009 06:11:51

Hi,

stimmt :-) ich habe es korrigiert.
Jan
Boas Enkler schrieb am:  06.10.2009 18:35:09

Sehr nettes Sample. Allerdings fehlt das disposen des Graphics objektes :)


Diese Snippets könnten für Sie interessant sein:
[VB.NET] Invert Colors from Image
[VB.NET] Resize image to fit in picturebox
[C#] Bild beim Zeichnen invertieren
[C#] Square Thumbnail generieren
[ASP.net] Datei nach Bildupload prüfen
[C#] Change PixelFormat
[VB.NET] Durschnittsfarbe eines Bildes ermitteln
[C#] Image in IPictureDisp umwandeln
[C#] Bild drehen (nach Winkelangabe)
[C#] Image zu Base64 konvertieren und zurück
[C#] Image in string wandeln und zurück
[C#] Bildgröße im Verhältnis verändern (Interpoliert)
[C#] Bild von einem Control oder Panel
[VB.NET] Bildausschnitt auslesen
[VB.NET] Bildgröße im Verhältnis verändern (Interpoliert)
[VB.NET] Bildgröße prozentual verändern (Interpoliert)
[VB.NET] Bildgröße in beiden Dimensionen verändern (Interpoliert)
[C#] base64 codierten String in eine Bitmap umwandeln
[C#] Bitmap in base64 codierten String wandeln
[C#] Image aus URL laden
[VB.NET] Bytearray to Image / Image to Bytearray
[C#] Bild splitten
[C#] Text2Bitmap (String in Bild umwandeln)
[C#] Hintergrundfarbe Transparenter Bilder (z.B. PNG) ändern
[C#] Größe eines Bildes mit mit gleichem Seitenverhältniss ändern
[C#] WPF: Image aus dem Web in Image-Element anzeigen
[C#] Bitmap schneller in Graustufen wandeln
[C#] ISO-Abbild von einer CD/DVD erstellen
[VB.NET] Let your image glow - Bild glühen lassen
[C#] old Windows Forms Image to new WPF Image
[C#] SystemIconsImageListWrapper
[VB.NET] Bildgröße verändern (Verhältnis)
[VB.NET] Bildgröße verändern (Prozentual)
[VB.NET] Bildgröße verändern (Manuell)
[C#] Floyd Steinberg Dithering
[C#] Bitmap in Graustufen wandeln
[C#] Größe verändern von Bildern
[VB.NET] Bitmap Differenz Analyse
[VB.NET] Bitmap Header auslesen (File & Info)
[C#] Bitmap in Icon konvertieren
[C#] ExtractAssociatedIcon
[C#] Bilder aus *.resx Ressourcen Dateien in WPF verwenden
[C#] Custom Cursor
[C#] Bild rotieren mit C#
[VB.NET] Neues Größenverhältnis eines Bilds berechnen
[VB.NET] JPEG Bild komprimieren
[VB.NET] Bild Transparent machen mit ColorMatrix
[VB.NET] Farben eines Bilds umkehren
[VB.NET] Bild in Graustufen umwandeln
[C#] GDI+ und das Paint Event
[C#] Bild anzeigen - Datei schließen
[VB.NET] Text auf Bild zeichnen
[C#] GetEuclidicDistance
[VB.NET] Verschlüsslung von Dateien mit Vernam
[VB.NET] Alle Pixel einer bestimmten Farbe neu einfärben
[C#] Bild steht auf reflektierendem Grund
[C#] externes Programm aufrufen (andere Version) mit Parameter
[C#] Herausfinden welches Programm ein bestimmtes Dokument öffnet
[VB.NET] Bild mit allen farben (True Color 16 Millionen Farben)
[C#] Schwarzweiß Bilder mit einem Farbverlauf füllen
[C#] Bilder proportional Skalieren
[VB.NET] Resize,Crop und beides gleichzeitig von Images
[C#] Form als Tray Icon ablegen (Notifyicon)
[VB.NET] Control Resize wie in der IDE auch zur Laufzeit - Extended
[C#] Kleine Array-Erweiterung

schlecht sehr gut
1 2 3 4 5 6 7 8 9 10
Nur angemeldete User können Snippets bewerten.