Пример #1
0
 public string Execute(FileItem item, string infile, string dest, ValuePairEnumerator configData)
 {
     var conf = new EffectViewModel(configData);
     dest = Path.Combine(Path.GetDirectoryName(dest), Path.GetFileNameWithoutExtension(dest) + ".jpg");
     using (MagickImage image = new MagickImage(infile))
     {
         switch (conf.SelectedMode)
         {
             case 0:
                 image.SepiaTone(new Percentage(conf.Param1));
                 break;
             case 1:
                 image.OilPaint(conf.Param1,0.1);
                 break;
             case 2:
                 image.Sketch();
                 break;
             case 3:
                 image.Charcoal();
                 break;
             case 4:
                 image.Solarize();
                 break;
             case 5:
                 image.Swirl(conf.Param1);
                 break;
             case 6:
                 image.Wave(PixelInterpolateMethod.Bilinear, conf.Param1, conf.Param2);
                 break;
             case 7:
                 image.BlueShift();
                 break;
             case 8:
                 image.RotationalBlur(conf.Param1);
                 break;
             case 9:
                 image.Raise(conf.Param1);
                 break;
             case 10:
                 image.Negate();
                 break;
             case 11:
                 image.ColorSpace = ColorSpace.Gray;
                 break;
         }
         image.Format = MagickFormat.Jpeg;
         image.Write(dest);
     }
     return dest;
 }
Пример #2
0
 private void ExecuteRotationalBlur(XmlElement element, MagickImage image)
 {
   Hashtable arguments = new Hashtable();
   foreach (XmlAttribute attribute in element.Attributes)
   {
     if (attribute.Name == "angle")
       arguments["angle"] = Variables.GetValue<double>(attribute);
     else if (attribute.Name == "channels")
       arguments["channels"] = Variables.GetValue<Channels>(attribute);
   }
   if (OnlyContains(arguments, "angle"))
     image.RotationalBlur((double)arguments["angle"]);
   else if (OnlyContains(arguments, "angle", "channels"))
     image.RotationalBlur((double)arguments["angle"], (Channels)arguments["channels"]);
   else
     throw new ArgumentException("Invalid argument combination for 'rotationalBlur', allowed combinations are: [angle] [angle, channels]");
 }
Пример #3
0
    public void Test_RotationalBlur()
    {
      using (MagickImage image = new MagickImage(Files.TestPNG))
      {
        image.RotationalBlur(20);

#if Q8
        ColorAssert.AreEqual(new MagickColor("#fbfbfb2b"), image, 10, 10);
        ColorAssert.AreEqual(new MagickColor("#8b0303"), image, 13, 67);
        ColorAssert.AreEqual(new MagickColor(OpenCLValue.Get("#167516", "#167616")), image, 63, 67);
        ColorAssert.AreEqual(new MagickColor("#3131fc"), image, 125, 67);
#elif Q16 || Q16HDRI
        ColorAssert.AreEqual(new MagickColor("#fbf7fbf7fbf72aab"), image, 10, 10);
        ColorAssert.AreEqual(new MagickColor("#8b2102990299"), image, 13, 67);
        ColorAssert.AreEqual(new MagickColor("#159275F21592"), image, 63, 67);
        ColorAssert.AreEqual(new MagickColor("#31853185fd47"), image, 125, 67);
#else
#error Not implemented!
#endif
      }

      using (MagickImage image = new MagickImage(Files.TestPNG))
      {
        image.RotationalBlur(20, Channels.RGB);

#if Q8
        ColorAssert.AreEqual(new MagickColor("#fbfbfb80"), image, 10, 10);
        ColorAssert.AreEqual(new MagickColor("#8b0303"), image, 13, 67);
        ColorAssert.AreEqual(new MagickColor(OpenCLValue.Get("#167516", "#167616")), image, 63, 67);
        ColorAssert.AreEqual(new MagickColor("#3131fc"), image, 125, 67);
#elif Q16 || Q16HDRI
        ColorAssert.AreEqual(new MagickColor("#fbf7fbf7fbf78000"), image, 10, 10);
        ColorAssert.AreEqual(new MagickColor("#8b2102990299"), image, 13, 67);
        ColorAssert.AreEqual(new MagickColor("#159275f21592"), image, 63, 67);
        ColorAssert.AreEqual(new MagickColor("#31853185fd47"), image, 125, 67);
#else
#error Not implemented!
#endif
      }
    }