המרת קבצי תמונה באמצעות C#

המר פורמטים של תמונה, Metafiles, WebP, Svg, Apng לבניית יישומי עיבוד תמונה מתקדמים מבוססי NET חוצה פלטפורמות.

 

.NET Image API מאפשר את תכונות עיבוד התמונה והעיבוד המתקדמות עבור מתכנתים. מפתחים יכולים לשלב אותו כדי להמיר תמונות רסטר וקטוריות, כולל תמונות ותמונות ל-PSD, PDF, GIF, PNG, DICOM, SVG, JPG, JPEG2000, APNG, BMP, TIFF, HTML5 CANVAS, WEBP, WMF, EMF ופורמטים אחרים של תמונה . API עוסק לא רק בהמרה של קבצים אלא גם בהמרת תמונות לגווני שחור ולבן ואפור, המרת שכבות תמונת GIF ועוד.

המרת תמונה למפת סיביות BMP, JPG, PNG

שימוש ב-C# Image API, המרת פורמט בין היא קלה כמו רק לשנות את הסיומת של הפורמט הרצוי. הנה כמה מקרים גנריים כגון תמונה ל-bmp, תמונה ל-jpg, תמונה ל-png ומפתחים יכולים בקלות לשפר את הפורמט הספציפי שלהם. התהליך הוא טעינת תמונת המקור באמצעות Image.Load . צור אובייקט יעד אפשרויות פורמט תמונה עבור כל הגדרות ספציפיות.בסוף קרא] אתשיטת השמירה]( https://apireference.aspose.com/imaging/net/aspose.imaging.image/save/methods/4 ) על ידי העברת קובץ היעד עם אפשרויות הנתיב והשמירה כפרמטר.

קוד C# להמרה בין תמונות

using Aspose.Imaging;
using Aspose.Imaging.FileFormats.Png;
using Aspose.Imaging.ImageOptions;
using System.Collections.Generic;
using System.IO;
using System.Linq;
string templatesFolder = @"c:\Users\USER\Downloads\templates\";
string dataDir = templatesFolder;
ProcessConvertion();
void ProcessConvertion()
{
//Get list of supported formats in
//Aspose.Imaging for loading and saving images
var formats = GetAvailableImageFormats();
var importFormats = formats.Import;
var exportFormats = formats.Export;
//Process each raster and vector format that can be loaded
foreach (var format in importFormats)
{
string formatExt = format.Key;
var inputFile = Path.Combine(templatesFolder, $"template.{formatExt}");
//Process each raster and vector format
//to which we can save imported image
foreach (var exportFormat in exportFormats)
{
var outputFile = Path.Combine(templatesFolder, $"convert-{formatExt}-to-{exportFormat.Key}.{exportFormat.Key}");
System.Console.WriteLine("Processing conversion:" + outputFile);
//More about load method can be found at
//https://apireference.aspose.com/imaging/net/aspose.imaging.image/load/methods/2
//Load imported image
using (var image = Image.Load(inputFile))
{
//Obtain default saving options defined for each image
ImageOptionsBase exportOptions = exportFormat.Value.Clone();
//If loaded image is vector, need to specify vector rasterization options
//for export to another vector
if (image is VectorImage)
{
VectorRasterizationOptions rasterizationOptions = format.Value;
rasterizationOptions.PageWidth = image.Width;
rasterizationOptions.PageHeight = image.Height;
exportOptions.VectorRasterizationOptions = rasterizationOptions;
}
image.Save(outputFile, exportOptions);
}
File.Delete(outputFile);
}
//System.GC.Collect();
}
}
(Dictionary<string, VectorRasterizationOptions> Import, Dictionary<string, ImageOptionsBase> Export) GetAvailableImageFormats()
{
////////////////////////////////
///Raster and vector formats to that we can export images
////////////////////////////////
//Raster image formats that support both - save and load and their default save options
Dictionary<string, ImageOptionsBase> rasterFormatsThatSupportExportAndImport = new Dictionary<string, ImageOptionsBase>()
{
{ "bmp", new BmpOptions()},
{ "gif", new GifOptions()},
{ "dicom", new DicomOptions()},
{ "jpg", new JpegOptions()},
{ "jpeg", new JpegOptions()},
{ "jpeg2000", new Jpeg2000Options() },
{ "j2k", new Jpeg2000Options { Codec = Aspose.Imaging.FileFormats.Jpeg2000.Jpeg2000Codec.J2K } },
{ "jp2", new Jpeg2000Options { Codec = Aspose.Imaging.FileFormats.Jpeg2000.Jpeg2000Codec.Jp2 }},
{ "png",new PngOptions(){ ColorType = PngColorType.TruecolorWithAlpha} },
{ "apng", new ApngOptions()},
{ "tiff", new Aspose.Imaging.ImageOptions.TiffOptions(Aspose.Imaging.FileFormats.Tiff.Enums.TiffExpectedFormat.Default)},
{ "tif", new Aspose.Imaging.ImageOptions.TiffOptions(Aspose.Imaging.FileFormats.Tiff.Enums.TiffExpectedFormat.Default)},
{ "tga", new TgaOptions()},
{ "webp", new WebPOptions()},
{ "ico", new IcoOptions()}
};
//Vector image formats that support both - save and load, their default save options
//and their rasterization options when exporting to another vector image
Dictionary<string, (ImageOptionsBase, VectorRasterizationOptions)> vectorFormatsThatSupportExportAndImport
= new Dictionary<string, (ImageOptionsBase, VectorRasterizationOptions)>()
{
{ "emf", (new EmfOptions(),new EmfRasterizationOptions()) },
{ "svg", (new SvgOptions(), new SvgRasterizationOptions())},
{ "wmf", (new WmfOptions(), new WmfRasterizationOptions())},
{ "emz", (new Aspose.Imaging.ImageOptions.EmfOptions(){ Compress = true }, new EmfRasterizationOptions())},
{ "wmz", (new Aspose.Imaging.ImageOptions.WmfOptions(){ Compress = true }, new WmfRasterizationOptions())},
{ "svgz", (new Aspose.Imaging.ImageOptions.SvgOptions(){ Compress = true }, new SvgRasterizationOptions())},
};
////////////////////////////////
///Raster and vector formats from which we can load images
////////////////////////////////
//Formats that can be only saved (supported only save to this formats)
Dictionary<string, ImageOptionsBase> formatsOnlyForExport = new Dictionary<string, ImageOptionsBase>()
{
{ "psd", new PsdOptions()},
{ "dxf", new DxfOptions(){ TextAsLines = true,ConvertTextBeziers = true} },
{ "pdf", new PdfOptions()},
{ "html", new Html5CanvasOptions()},
};
//Raster formats that can be only loaded
List<string> formatsOnlyForImport = new List<string>()
{
"djvu", "dng", "dib"
};
//Vector formats only for loading and their rasterization options when exporting to another vector format
Dictionary<string, VectorRasterizationOptions> vectorFormatsOnlyForImport = new Dictionary<string, VectorRasterizationOptions>()
{
{"eps", new EpsRasterizationOptions()},
{"cdr", new CdrRasterizationOptions() },
{"cmx", new CmxRasterizationOptions() },
{"otg", new OtgRasterizationOptions() },
{"odg", new OdgRasterizationOptions() }
};
//Get total set of formats to what we can export images
Dictionary<string, ImageOptionsBase> exportFormats = vectorFormatsThatSupportExportAndImport
.ToDictionary(s => s.Key, s => s.Value.Item1)
.Union(formatsOnlyForExport)
.Concat(rasterFormatsThatSupportExportAndImport)
.ToDictionary(s => s.Key, s => s.Value);
//Get total set of formats that can be loaded
Dictionary<string, VectorRasterizationOptions> importFormats = vectorFormatsOnlyForImport
.Union(formatsOnlyForImport.ToDictionary(s => s, s => new VectorRasterizationOptions()))
.Union(vectorFormatsThatSupportExportAndImport.ToDictionary(s => s.Key, s => s.Value.Item2))
.ToDictionary(s => s.Key, s => s.Value);
return (Import: importFormats, Export: exportFormats);
}

המרת תמונת רסטר ל-PDF

תהליך המרת תמונות רסטר ל-PDF זהה לזה של המרה בין תמונות, אלא שה-API מספק PdfOptions עבור הגדרות PDF ספציפיות . מתכנתים יכולים לשפר אותו בקלות לצרכים הספציפיים שלהם.

קוד עבור המרת תמונות רסטר ל-PDF

using (Image imge = Image.Load(dataDir+ "transparent_orig.gif"))
{
imge.Save(dataDir+"output.pdf", new PdfOptions() { PdfDocumentInfo = new Aspose.Imaging.FileFormats.Pdf.PdfDocumentInfo() } );
}

המר SVG לתמונות רסטר BMP, PNG, JPG

תהליך ההמרה של SVG זהה, טען קובץ SVG, השתמש באפשרויות שמירת התמונה הרלוונטיות וקריאה לשיטת השמירה. ממשק API של תמונה מספק SvgRasterizationOptions להגדרת תמונות PageWidth, PageHeight ורסטר השתמשו במאפיין VectorRasterizationOptions שלהם לאתחול ולקבלת אפשרויות SvgRasterizationOptions.

קוד C# עבור תמונות SVG לראסטר

// Load the image
using (SvgImage image = (SvgImage)Image.Load(dataDir + "sourceFile.Svg"))
{
// Create an instance of relevant raster image options and Save the results to disk
PngOptions pngOptions = new PngOptions();
SvgRasterizationOptions svgOptions = new SvgRasterizationOptions();
svgOptions.PageWidth = 100;
svgOptions.PageHeight = 200;
pngOptions.VectorRasterizationOptions = svgOptions;
image.Save(dataDir + "ConvertingSVGToRasterImages_out.png", pngOptions);
}

כל הפורמטים הנתמכים להמרה

להלן מוצגת רשימה מלאה של פורמטים של תמונה, שתוכל להמיר ל:


כל פורמטי התמונה הנתמכים להמרה

להלן מוצגת רשימה מלאה של פורמטים של תמונה, שתוכל להמיר מ: