|
using Aspose.Imaging;
|
|
using Aspose.Imaging.FileFormats.Bmp;
|
|
using Aspose.Imaging.FileFormats.Dicom;
|
|
using Aspose.Imaging.FileFormats.Emf;
|
|
using Aspose.Imaging.FileFormats.Jpeg;
|
|
using Aspose.Imaging.FileFormats.Jpeg2000;
|
|
using Aspose.Imaging.FileFormats.Png;
|
|
using Aspose.Imaging.FileFormats.Psd;
|
|
using Aspose.Imaging.FileFormats.Tiff.Enums;
|
|
using Aspose.Imaging.ImageFilters.FilterOptions;
|
|
using Aspose.Imaging.ImageOptions;
|
|
using Aspose.Imaging.Masking;
|
|
using Aspose.Imaging.Masking.Options;
|
|
using Aspose.Imaging.Masking.Result;
|
|
using Aspose.Imaging.Sources;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.IO;
|
|
using System.Linq;
|
|
|
|
string templatesFolder = @"c:\Users\USER\Downloads";
|
|
GrayscaleImages();
|
|
|
|
void GrayscaleImages()
|
|
{
|
|
List<string> rasterFormats = new List<string>() { "jpg", "png", "bmp", "apng", "dicom",
|
|
"jp2", "j2k", "tga", "webp", "tif", "gif","ico" };
|
|
List<string> vectorFormats = new List<string>() { "svg", "otg", "odg", "eps", "wmf", "emf", "wmz", "emz", "cmx", "cdr" };
|
|
|
|
List<string> allFormats = new List<string>(rasterFormats);
|
|
allFormats.AddRange(vectorFormats);
|
|
|
|
allFormats.ForEach(
|
|
formatExt =>
|
|
{
|
|
var inputFile = Path.Combine(templatesFolder, $"template.{formatExt}");
|
|
bool isVectorFormat = vectorFormats.IndexOf(formatExt) > -1;
|
|
|
|
//Need to rasterize vector formats before background remove
|
|
if (isVectorFormat)
|
|
{
|
|
inputFile = RasterizeVectorImage(formatExt, inputFile);
|
|
}
|
|
|
|
var outputFile = Path.Combine(templatesFolder, $"grayscale_{formatExt}.png");
|
|
|
|
Console.WriteLine($"Processing {formatExt}");
|
|
|
|
using (var image = (RasterImage)Image.Load(inputFile))
|
|
{
|
|
//Additional code examples can be found at
|
|
//https://apireference.aspose.com/imaging/net/aspose.imaging/rasterimage/methods/grayscale
|
|
image.Grayscale();
|
|
|
|
//If image is multipage save each page to png to demonstrate results
|
|
if (image is IMultipageImage multiPage && multiPage.PageCount > 1)
|
|
{
|
|
for (var pageIndex = 0; pageIndex < multiPage.PageCount; pageIndex++)
|
|
{
|
|
string fileName = $"grayscale_page{pageIndex}_{formatExt}.png";
|
|
multiPage.Pages[pageIndex].Save(templatesFolder + fileName, new PngOptions());
|
|
File.Delete(templatesFolder + fileName);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
image.Save(outputFile, new PngOptions());
|
|
File.Delete(outputFile);
|
|
}
|
|
}
|
|
|
|
//Remove rasterized vector image
|
|
if (isVectorFormat)
|
|
{
|
|
File.Delete(inputFile);
|
|
}
|
|
}
|
|
);
|
|
}
|
|
|
|
string RasterizeVectorImage(string formatExt, string inputFile)
|
|
{
|
|
string outputFile = Path.Combine(templatesFolder, $"rasterized.{formatExt}.png");
|
|
using (var image = Image.Load(inputFile))
|
|
{
|
|
image.Save(outputFile, new PngOptions());
|
|
}
|
|
|
|
return outputFile;
|
|
} |