בינאריזה של PNG באמצעות C#
בנה יישומי .NET משלך כדי לשלב קבצים PNG באמצעות ממשקי API בצד השרת.
כיצד לבצע בינאריזה של קבצים PNG באמצעות C#
המצאת הסרט הצבעוני סימנה אבן דרך משמעותית בתחום הצילום. עם זאת, צילום קלאסי מקושר מטבעו לדימויים בשחור-לבן. למרות היכולות הטכניות הנרחבות של מצלמות ללכוד את כל ספקטרום הצבעים, אנשים רבים בוחרים במונוכרום, והופכים את התמונות שלהם לשחור ולבן. במקרים כאלה, נכנסת לפעולה פונקציית בינאריזציה, הממירה את כל הפיקסלים לערכים בינאריים: "0" ללבן ו"1" לשחור. בתרחישים אחרים, ההמרה הזו אינה מונעת מבחירות אמנותיות אלא מבחירות מעשיות, כמו הכנת איורים בשחור-לבן להדפסה בספרים או בעיתונים. באמצעות ספריית הגרפיקה C#, אתה יכול להגדיר סף בהירות פיקסלים. פיקסלים עם ערכי בהירות מתחת לסף זה יהפכו לשחורים, בעוד אלו שמעליו יהפכו לבנים. לחלופין, אתה יכול להשתמש בשיטת בינאריזציה אדפטיבית השוקלת את ערכי הפיקסלים באזור שמסביב. גישה זו מביאה למעברים חלקים יותר בין גבולות צבע בתמונה בשחור-לבן המתקבלת. על מנת לשלב קבצים ב-PNG, נשתמש Aspose.Imaging for .NET API שהוא עשיר בתכונות, חזק וקל לשימוש למניפולציה והמרה של תמונות עבור פלטפורמת C#. פתח את מנהל החבילות NuGet , חפש את Aspose.Imaging והתקן. אתה יכול גם להשתמש בפקודה הבאה ממסוף מנהל החבילות.
קונסולת מנהל החבילות
PM> Install-Package Aspose.Imaging
שלבים לעיבוד בינארי של PNG באמצעות C#
אתה צריך את aspose.imaging.dll כדי לנסות את זרימת העבודה הבאה בסביבה שלך.
- טען קבצים PNG בשיטת Image.Load
- בינאריזה של תמונות;
- שמור תמונה דחוסה לדיסק בפורמט הנתמך על ידי Aspose.Imaging
דרישות מערכת
Aspose.Imaging עבור .NET נתמך בכל מערכות ההפעלה העיקריות. רק ודא שיש לך את התנאים המוקדמים הבאים.
- Microsoft Windows או מערכת הפעלה תואמת עם .NET Framework, .NET Core, Windows Application, ASP.NET Web Application.
- סביבת פיתוח כמו Microsoft Visual Studio.
- Aspose.Imaging עבור .NET שמוזכר בפרויקט שלך.
בינאריזה של תמונות PNG - .NET
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"; | |
BinarizeFixed(); | |
void BinarizeOtsu() | |
{ | |
FilterImages(image => | |
{ | |
//https://apireference.aspose.com/imaging/net/aspose.imaging/rasterimage/methods/binarizeotsu | |
image.BinarizeOtsu(); | |
}, "binarizeotsu"); | |
} | |
void BinarizeBradley() | |
{ | |
FilterImages(image => | |
{ | |
//https://apireference.aspose.com/imaging/net/aspose.imaging/rasterimage/methods/binarizebradley/index | |
image.BinarizeBradley(0.5); | |
}, "binarizebradley"); | |
} | |
void BinarizeFixed() | |
{ | |
FilterImages(image => | |
{ | |
//https://apireference.aspose.com/imaging/net/aspose.imaging/rasterimage/methods/binarizefixed | |
image.BinarizeFixed(70); | |
}, "binarizefixed"); | |
} | |
void FilterImages(Action<RasterImage> doFilter, string filterName) | |
{ | |
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, $"{filterName}_{formatExt}.png"); | |
Console.WriteLine($"Processing {formatExt}"); | |
using (var image = (RasterImage)Image.Load(inputFile)) | |
{ | |
doFilter(image); | |
//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 = $"{filterName}_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; | |
} |
אודות Aspose.Imaging עבור API של .NET
Aspose.Imaging API הוא פתרון לעיבוד תמונה ליצירה, שינוי, ציור או המרת תמונות (תמונות) בתוך יישומים. הוא מציע: עיבוד תמונה חוצה פלטפורמות, כולל אך לא רק המרות בין פורמטים שונים של תמונה (כולל עיבוד תמונה אחיד מרובה עמודים או ריבוי מסגרות), שינויים כגון ציור, עבודה עם פרימיטיבים גרפיים, טרנספורמציות (שינוי גודל, חיתוך, הפוך וסיבוב , בינאריזציה, גווני אפור, התאמה), תכונות מתקדמות של מניפולציה של תמונות (סינון, שיטוט, מיסוך, ביטול הטיה) ואסטרטגיות אופטימיזציה של זיכרון. זוהי ספרייה עצמאית ואינה תלויה בתוכנה כלשהי לפעולות תמונה. אפשר להוסיף בקלות תכונות המרת תמונה בעלות ביצועים גבוהים עם ממשקי API מקוריים בתוך פרויקטים. אלו הם 100% ממשקי API פרטיים מקומיים ותמונות מעובדות בשרתים שלך.בצע בינאריזה של PNG באמצעות אפליקציה מקוונת
בצע בינאריזה של מסמכים ב-PNG על ידי ביקור ב אתר האינטרנט של הדגמות חיות . להדגמה החיה יש את היתרונות הבאים
PNG מה זה PNG פורמט קובץ
PNG, Portable Network Graphics, מתייחס לסוג של פורמט קובץ תמונת רסטר המשתמש בדחיסה ללא הפסדים. פורמט קובץ זה נוצר כתחליף ל-Graphics Interchange Format (GIF) ואין לו מגבלות זכויות יוצרים. עם זאת, פורמט קובץ PNG אינו תומך בהנפשות. פורמט קובץ PNG תומך בדחיסת תמונה ללא הפסדים שהופך אותו לפופולרי בקרב המשתמשים שלו. עם חלוף הזמן, PNG התפתח כאחד מפורמטי קבצי התמונה הנפוצים ביותר. כמעט לכל מערכות ההפעלה יש תמיכה בפתיחת קבצי PNG. לדוגמה, ל-Microsoft Windows Viewer יש את היכולת לפתוח קבצי PNG מכיוון שלמערכת ההפעלה יש כברירת מחדל את התמיכה הזמינה כחלק מההתקנה.
קרא עודפורמטים בינאריים נתמכים אחרים
באמצעות C#, אפשר לשלב בקלות פורמטים שונים כולל.