Click here to Skip to main content
15,895,808 members
Articles / Programming Languages / C#
Tip/Trick

Execute GIMP filters in C#

Rate me:
Please Sign up or sign in to vote.
0.00/5 (No votes)
20 Feb 2012CPOL 17.3K   2  
How to execute GIMP filters in C#.

First of all you need to install GIMP. After that, set the path variable (C:\Program Files\GIMP-2.0\bin). Now write a GIMP script and save it with the .scm extention in the C:\Users\[username]\.gimp-2.6\scripts folder. You can write various GIMP scripts. You get details about GIMP filters from the pluginrc file in your home floder(C:\Users\dhanu-sdu\.gimp-2.6).


GIMP script for Unsharpmask filter


(define (simple-unsharp-mask filename
                             radius
                             amount
                             threshold)
   (let* ((image (car (gimp-file-load RUN-NONINTERACTIVE filename filename)))
          (drawable (car (gimp-image-get-active-layer image))))
     (plug-in-unsharp-mask RUN-NONINTERACTIVE
                       image drawable radius amount threshold)
     (set! drawable (car (gimp-image-get-active-layer image)))
     (gimp-file-save RUN-NONINTERACTIVE image drawable filename filename)
     (gimp-image-delete image)))

Now in the C# application, construct the command and execute in the command line:


C#
private void unsharpMaskButton_Click(object sender, EventArgs e)
{
    try
    {
        if (!string.IsNullOrEmpty(choosenFile))
        {
            int radius = radiusTrackBar.Value;
            int amount = amountTrackBar.Value;
            int threshold = ThresholdTrackBar.Value;
            string path = choosenFile.Replace(@"\", @"\\");
            //creating the command
            string a = @"gimp-2.6.exe -i -b ""(simple-unsharp-mask \""" + 
                   path + @"\"" " + radius + " " + amount + " " + threshold +
                   @")"" -b ""(gimp-quit 0)""";
            //execute gimp filter in command line
            string result = ExecuteCommandSync(a);
            //sets the new image as the pictureBox image
            Bitmap newImage = (Bitmap)Image.FromFile(choosenFile);
            pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;
            pictureBox1.Image = new Bitmap(newImage);
            newImage.Dispose();
            newImage = null;
        }
        else
        {
            MessageBox.Show("please select a image");
        }
    }
    catch (Exception a)
    {
        MessageBox.Show(a.ToString());
    }
}

Executing the command


C#
public string ExecuteCommandSync(object command) 
{
    try
    {
       
        System.Diagnostics.ProcessStartInfo procStartInfo =
            new System.Diagnostics.ProcessStartInfo("cmd", "/c " + command);
        procStartInfo.RedirectStandardOutput = true;
        procStartInfo.UseShellExecute = false;
        procStartInfo.CreateNoWindow = true;
        System.Diagnostics.Process proc = new System.Diagnostics.Process();
        proc.StartInfo = procStartInfo;
        proc.Start();
        StreamReader reader = proc.StandardOutput;
        string result = reader.ReadToEnd();
        Console.WriteLine(result);
        return result;
    }
    catch (Exception objException)
    {
        MessageBox.Show(objException.ToString());
    }

    return null;
}

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Software Developer
Sri Lanka Sri Lanka
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.

Comments and Discussions

 
-- There are no messages in this forum --