Chuyển đổi tệp hình ảnh qua C #

Chuyển đổi các định dạng Hình ảnh, Siêu tệp, WebP, Svg, Apng để xây dựng các ứng dụng xử lý hình ảnh tiên tiến dựa trên .NET đa nền tảng.

 

.NET Image API hỗ trợ các tính năng kết xuất và xử lý hình ảnh nâng cao cho các lập trình viên. Các nhà phát triển có thể tích hợp nó để chuyển đổi hình ảnh raster & vector, bao gồm ảnh và hình ảnh sang PSD, PDF, GIF, PNG, DICOM, SVG, JPG, JPEG2000, APNG, BMP, TIFF, HTML5 CANVAS, WEBP, WMF, EMF và các định dạng hình ảnh khác . API không chỉ giải quyết việc chuyển đổi tệp mà còn giải quyết việc chuyển đổi hình ảnh sang màu đen trắng và thang độ xám, chuyển đổi các lớp ảnh GIF và hơn thế nữa.

Chuyển đổi hình ảnh sang Bitmap BMP, JPG, PNG

Sử dụng C # Image API, chuyển đổi định dạng Inter dễ dàng như chỉ cần thay đổi phần mở rộng của định dạng mong muốn. Dưới đây là một số trường hợp chung chung như image thành bmp, image thành jpg, image thành png và các nhà phát triển có thể dễ dàng nâng cao cho định dạng cụ thể của họ. Quá trình được tải hình ảnh nguồn qua Image.Load . Tạo một đối tượng đích tùy chọn định dạng hình ảnh cho bất kỳ cài đặt cụ thể nào. Cuối cùng gọi Phương pháp Lưu bằng cách chuyển tệp đích với đường dẫn và tùy chọn Lưu dưới dạng tham số.

Mã C # để chuyển đổi giữa các hình ảnh

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);
}

Chuyển đổi hình ảnh sang PDF nhanh hơn

Quá trình chuyển đổi hình ảnh raster sang PDF giống như quá trình chuyển đổi giữa các hình ảnh, ngoại trừ API cung cấp PdfOptions cho các cài đặt PDF cụ thể . Các lập trình viên có thể dễ dàng nâng cao nó cho các nhu cầu cụ thể của họ.

Mã để chuyển đổi hình ảnh Raster sang PDF

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

Chuyển đổi SVG sang Raster Hình ảnh BMP, PNG, JPG

Quá trình chuyển đổi SVG cũng giống như vậy, Tải tệp SVG, Sử dụng các tùy chọn lưu ảnh có liên quan và gọi phương thức Lưu. Image API cung cấp SvgRasterizationOptions để thiết lập hình ảnh PageWidth, PageHeight và raster sử dụng thuộc tính VectorRasterizationOptions để khởi tạo và nhận các tùy chọn SvgRasterizationOptions.

Mã C # cho hình ảnh SVG to Raster

// 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);
}

Tất cả các định dạng hình ảnh được hỗ trợ để chuyển đổi từ

Dưới đây là danh sách đầy đủ các định dạng hình ảnh mà bạn có thể chuyển đổi sang:


Tất cả các định dạng hình ảnh được hỗ trợ để chuyển đổi sang

Dưới đây là danh sách đầy đủ các định dạng hình ảnh mà bạn có thể chuyển đổi từ: