Feedback

Bild splitten

Sprache: C#

Mit dieser Funktion kann man ein Bild in mehrere zerschneiden. Benutzung: SplitImage(@"C:MeineBilderChicago.jpg", 128, 128, @"C:MeineBilderSplit");
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");
        }
    }
}
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");
        }
    }
}

1 Kommentar

  1. Bad parameterdescription and[b] wrong code[/b] 🙁 …
    imageX and imageY is the amount of splits. e.g: I have a 510×476 image with 34×34 icons, so imageX = 510/34 = 15 ; imageY = 476/34 = 14.
    [b]To get it working[/b], change line 23/24 with:
    focusRectangle.Width = original.Width / imageX;
    focusRectangle.Height = original.Height / imageY;