Feedback

C# - Bild splitten

Veröffentlicht von am 30.11.2007
(2 Bewertungen)
Mit dieser Funktion kann man ein Bild in mehrere zerschneiden.

Benutzung:
SplitImage(@"C:\MeineBilder\Chicago.jpg", 128, 128, @"C:\MeineBilder\Split");
Snippet in VB übersetzen
using System.Drawing;
using System.Drawing.Imaging;

/// <summary>
/// Splittet ein Bild in mehrere Einzelteile.
/// </summary>
/// <param name="path">Pfad zu der Bilddatei.</param>
/// <param name="imageX">X-Koordinate</param>
/// <param name="imageY">Y-Koordinate</param>
/// <param name="outputPath">Pfad zu dem Ordner, wo die Bilddateien gespeichert werden.</param>
public static void SplitImage(string path, int imageX, int imageY, string outputPath)
{
    Bitmap original = new Bitmap(path);
    Rectangle focusRectangle = new Rectangle();
    Bitmap destination;

    for (int x = 0; x <= imageX - 1; x++)
    {
        for (int y = 0; y <= imageY - 1; y++)
        {
            focusRectangle.X = x * (original.Width / imageX);
            focusRectangle.Y = y * (original.Height / imageY);
            focusRectangle.Height = original.Height / imageX;
            focusRectangle.Width = original.Width / imageY;

            destination = original.Clone(focusRectangle, PixelFormat.DontCare);
            destination.Save(outputPath + @"\im" + x.ToString() + y.ToString() + ".jpg");
        }
    }
}
Abgelegt unter Bild, Bilder, Image, Images, Split, splitten, Zerschneiden.

1 Kommentare zum Snippet

Niko Klein schrieb am 03.05.2012:
Bad parameterdescription and wrong code :( ...
imageX and imageY is the amount of splits. e.g: I have a 510x476 image with 34x34 icons, so imageX = 510/34 = 15 ; imageY = 476/34 = 14.
To get it working, change line 23/24 with:
focusRectangle.Width = original.Width / imageX;
focusRectangle.Height = original.Height / imageY;
 

Logge dich ein, um hier zu kommentieren!