การแปลงไฟล์รูปภาพผ่าน 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 การแปลงรูปแบบอินเตอร์ทำได้ง่ายเพียงแค่เปลี่ยนนามสกุลของรูปแบบที่ต้องการ ต่อไปนี้คือกรณีทั่วไปบางประการ เช่น image to bmp, image to jpg, image to png และนักพัฒนาสามารถปรับปรุงรูปแบบเฉพาะของตนได้อย่างง่ายดาย กระบวนการโหลดอิมเมจต้นทางผ่าน Image.Load สร้างวัตถุเป้าหมาย ตัวเลือกรูปแบบรูปภาพ สำหรับการตั้งค่าเฉพาะใดๆ สุดท้ายให้เรียก วิธีการบันทึก โดยส่งไฟล์เป้าหมายที่มีเส้นทางและตัวเลือกการบันทึกเป็นพารามิเตอร์

รหัส 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, ใช้ตัวเลือกการบันทึกรูปภาพที่เกี่ยวข้องและเรียกวิธีการบันทึก Image 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);
}

รูปแบบภาพที่รองรับทั้งหมดสำหรับการแปลงจาก

ด้านล่างนี้คือรายการรูปแบบภาพทั้งหมดที่คุณสามารถแปลงเป็น:


รูปแบบภาพที่รองรับทั้งหมดที่จะแปลงเป็น

ด้านล่างนี้คือรายการรูปแบบภาพทั้งหมดที่คุณสามารถแปลงจาก: