PPTX DOCX XLSX PDF ODP
Aspose.Imaging  för .NET
DNG

Ta bort bakgrund från DNGs via C#

Bygg dina egna .NET-appar för att ta bort bakgrund från DNG-filer med hjälp av API:er på serversidan.

Hur man tar bort bakgrund i DNG-filer med C#

Att ta bort bakgrunden från en bild innebär att man isolerar förgrundsobjekt, en uppgift som kräver objektigenkänning. Det finns flera metoder för att identifiera objekt i ett foto i formatet DNG. För enkla bilder med en enhetlig färgbakgrund räcker det med en automatisk metod. För foton med flera eller delvis sammanslagna figurer blir det dock nödvändigt att förmarkera objekt. Detta innebär att ange rektangulära områden och objekttyper för borttagning. I komplicerade fall möjliggör Cloud API automatisk objektdetektering. Cloud API tillhandahåller en molnapplikation som kan känna igen objekt i foton och utnyttja de resulterande konturerna för borttagning av bakgrunden. Efter borttagning kan kanter som lämnas kvar av figurer jämnas ut för att förbättra bildkvaliteten. För att ta bort bakgrund i DNG-filer kommer vi att använda Aspose.Imaging for .NET API som är ett funktionsrikt, kraftfullt och lättanvänt API för bildmanipulation och konvertering för C#-plattformen. Öppna NuGet pakethanteraren, sök efter Aspose.Imaging och installera. Du kan också använda följande kommando från Package Manager Console.

Pakethanterarens konsolkommando


PM> Install-Package Aspose.Imaging

Steg för att ta bort bakgrund från DNGs via C#

Du behöver aspose.imaging.dll för att prova följande arbetsflöde i din egen miljö.

  • Ladda DNG-filer med Image.Load-metoden
  • Ta bort bakgrund;
  • Spara bilden på skivan i det format som stöds av Aspose.Imaging

Systemkrav

Aspose.Imaging för .NET stöds på alla större operativsystem. Se bara till att du har följande förutsättningar.

  • Microsoft Windows eller ett kompatibelt operativsystem med .NET Framework, .NET Core, Windows Application, ASP.NET Web Application.
  • Utvecklingsmiljö som Microsoft Visual Studio.
  • Aspose.Imaging för .NET som refereras till i ditt projekt.
 

Ta bort bakgrund i DNG-bilder - .NET

using Aspose.Imaging;
using Aspose.Imaging.FileFormats.Emf;
using Aspose.Imaging.FileFormats.Png;
using Aspose.Imaging.FileFormats.Tiff.Enums;
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";
RemoveBackgroundGenericExample();
void RemoveBackgroundProcessingWithManualRectangles()
{
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", "wmf", "emf", "wmz", "emz", "cmx", "cdr" };
List<string> allFormats = new List<string>(rasterFormats);
allFormats.AddRange(vectorFormats);
allFormats.ForEach(
formatExt =>
{
var inputFile = Path.Combine(templatesFolder, $"couple.{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, $"remove_background_manual_rectangles.{formatExt}");
Console.WriteLine($"Processing {formatExt}");
using (var image = (RasterImage)Image.Load(inputFile))
{
//Additional code examples can be found at
//https://docs.aspose.com/imaging/net/remove-background-from-images/#graph-cut-auto-masking-using-imagingcloud-api
var maskingOptions = new AutoMaskingGraphCutOptions
{
FeatheringRadius = 2,
Method = SegmentationMethod.GraphCut,
Args = new AutoMaskingArgs()
{
ObjectsRectangles = new Aspose.Imaging.Rectangle[]
{
// girl's bound box
new Aspose.Imaging.Rectangle(87, 47, 123, 308),
// boy's bound box
new Aspose.Imaging.Rectangle(180, 24, 126, 224)
}
},
ExportOptions = new PngOptions
{
ColorType = PngColorType.TruecolorWithAlpha,
Source = new FileCreateSource(outputFile, false)
}
};
using (var maskingSession = new ImageMasking(image).CreateSession(maskingOptions))
{
// first run of segmentation
using (maskingSession.Decompose()) { }
var argsWithUserMarkers = new AutoMaskingArgs()
{
ObjectsPoints = new Point[][]
{
// background markers
null,
// foreground markers
new UserMarker()
// boy's head
.AddPoint(218, 48, 10)
// girl's head
.AddPoint(399, 66, 10)
// girs's body
.AddPoint(158, 141, 10)
.AddPoint(158, 209, 20)
.AddPoint(115, 225, 5)
.GetPoints()
}
};
using (var maskingResult = maskingSession.ImproveDecomposition(argsWithUserMarkers))
{
using (var resultImage = maskingResult[1].GetImage())
{
resultImage.Save();
}
}
}
}
File.Delete(outputFile);
//Remove rasterized vector image
if (isVectorFormat)
{
File.Delete(inputFile);
}
}
);
}
void RemoveBackgroundAutoProcessingWithAssumedObjects()
{
List<string> rasterFormats = new List<string>() { "jpg", "png", "bmp", "apng", "dicom",
"jp2", "j2k", "tga", "webp", "tif", "gif" };
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, $"couple.{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, $"remove_background_auto_assumed_objects.{formatExt}");
Console.WriteLine($"Processing {formatExt}");
using (var image = (RasterImage)Image.Load(inputFile))
{
//Additional code examples can be found at
//https://docs.aspose.com/imaging/net/remove-background-from-images/#graph-cut-auto-masking-using-imagingcloud-api
var maskingOptions = new AutoMaskingGraphCutOptions
{
AssumedObjects = new List<AssumedObjectData>
{
// girl's bound box
new AssumedObjectData(DetectedObjectType.Human, new Aspose.Imaging.Rectangle(87, 47, 123, 308)),
// boy's bound box
new AssumedObjectData(DetectedObjectType.Human, new Aspose.Imaging.Rectangle(180, 24, 126, 224)),
},
CalculateDefaultStrokes = true,
FeatheringRadius = 1,
Method = SegmentationMethod.GraphCut,
ExportOptions = new PngOptions
{
ColorType = PngColorType.TruecolorWithAlpha,
Source = new FileCreateSource(outputFile, false)
},
BackgroundReplacementColor = Color.Green
};
using (var maskingResult = new ImageMasking(image).Decompose(maskingOptions))
{
using (var resultImage = maskingResult[1].GetImage())
{
resultImage.Save();
}
}
}
//Remove rasterized vector image
if (isVectorFormat)
{
File.Delete(inputFile);
}
File.Delete(outputFile);
}
);
}
void RemoveBackgroundAutoProcessing()
{
List<string> rasterFormats = new List<string>() { "jpg", "png", "bmp", "apng", "dicom",
"jp2", "j2k", "tga", "webp", "tif", "gif" };
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, $"couple.{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, $"remove_background_auto.{formatExt}");
Console.WriteLine($"Processing {formatExt}");
using (var image = (RasterImage)Image.Load(inputFile))
{
//Additional code examples can be found at
//https://docs.aspose.com/imaging/net/remove-background-from-images/#graph-cut-auto-masking-using-imagingcloud-api
var maskingOptions = new AutoMaskingGraphCutOptions
{
FeatheringRadius = 1,
Method = SegmentationMethod.GraphCut,
ExportOptions = new PngOptions
{
ColorType = PngColorType.TruecolorWithAlpha,
Source = new FileCreateSource(outputFile, false)
},
BackgroundReplacementColor = Color.Green
};
using (var maskingResult = new ImageMasking(image).Decompose(maskingOptions))
{
using (var resultImage = maskingResult[1].GetImage())
{
resultImage.Save();
}
}
}
//Remove rasterized vector image
if (isVectorFormat)
{
File.Delete(inputFile);
}
File.Delete(outputFile);
}
);
}
void RemoveBackgroundGenericExample()
{
List<string> rasterFormats = new List<string>() { "jpg", "png", "bmp", "apng", "dicom",
"jp2", "j2k", "tga", "webp", "tif", "gif" };
List<string> vectorFormats = new List<string>() { "svg", "otg", "odg", "wmf", "emf", "wmz", "emz", "cmx", "cdr" };
List<string> allFormats = new List<string>(rasterFormats);
allFormats.AddRange(vectorFormats);
allFormats.ForEach(
formatExt =>
{
var inputFile = Path.Combine(templatesFolder, $"couple.{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, $"remove_background.{formatExt}");
Console.WriteLine($"Processing {formatExt}");
using (var image = (RasterImage)Image.Load(inputFile))
{
//Additional code examples can be found at
//https://docs.aspose.com/imaging/net/remove-background-from-images/#graph-cut-auto-masking-using-imagingcloud-api
var maskingOptions = new AutoMaskingGraphCutOptions
{
CalculateDefaultStrokes = true,
FeatheringRadius = 1,
Method = SegmentationMethod.GraphCut,
ExportOptions = new PngOptions
{
ColorType = PngColorType.TruecolorWithAlpha,
Source = new FileCreateSource(outputFile, false)
},
BackgroundReplacementColor = Color.Green
};
using (var maskingResult = new ImageMasking(image).Decompose(maskingOptions))
{
using (var resultImage = maskingResult[1].GetImage())
{
resultImage.Save();
}
}
}
//Remove rasterized vector image
if (isVectorFormat)
{
File.Delete(inputFile);
}
File.Delete(outputFile);
}
);
}
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;
}
class UserMarker
{
private readonly List<Point> _list = new List<Point>();
public UserMarker AddPoint(int left, int top, int radius)
{
for (var y = top - radius; y <= top + radius; y++)
{
for (var x = left - radius; x <= left + radius; x++)
{
this._list.Add(new Point(x, y));
}
}
return this;
}
public Point[] GetPoints()
{
return this._list.ToArray();
}
}
 
  • Om Aspose.Imaging för .NET API

    Aspose.Imaging API är en bildbehandlingslösning för att skapa, modifiera, rita eller konvertera bilder (foton) i applikationer. Det erbjuder: plattformsoberoende bildbehandling, inklusive men inte begränsat till konverteringar mellan olika bildformat (inklusive enhetlig bildbehandling med flera sidor eller flera ramar), modifieringar som ritning, arbete med grafiska primitiver, transformationer (ändra storlek, beskära, vänd och rotera , binarisering, gråskala, justera), avancerade bildmanipuleringsfunktioner (filtrering, vibrering, maskering, avskedning) och minnesoptimeringsstrategier. Det är ett fristående bibliotek och är inte beroende av någon programvara för bildoperationer. Man kan enkelt lägga till högpresterande bildkonverteringsfunktioner med inbyggda API:er inom projekt. Dessa är 100 % privata API:er på plats och bilder bearbetas på dina servrar.

    Ta bort bakgrund i DNGs via onlineappen

    Ta bort bakgrunden i DNG-dokument genom att besöka vår webbplats för Live Demos . Livedemon har följande fördelar

      Du behöver inte ladda ner eller ställa in någonting
      Du behöver inte skriva någon kod
      Ladda bara upp dina DNG-filer och tryck på knappen Ta bort bakgrund nu.
      Skaffa omedelbart nedladdningslänken för den resulterande filen

    DNG Vad är DNG Filformat

    DNG är ett digitalkamerabildformat som används för lagring av råfiler. Den har utvecklats av Adobe i september 2004. Den utvecklades i princip för digital fotografering. DNG är en förlängning av TIFF/EP standardformat och använder metadata avsevärt. För att manipulera rådata från digitalkameror med enkel flexibilitet och konstnärlig kontroll väljer fotografer Camera Raw-filer. JPEG- och TIFF-format lagrar bilder som bearbetas av kameran, därför finns det inte mycket utrymme för ändringar i sådana format.

    Läs mer

    Andra som stöds Ta bort bakgrundsformat

    Med C# kan man enkelt ta bort bakgrund från olika format inklusive.

    APNG (Animerad bärbar nätverksgrafik)
    BMP (Bitmap bild)
    ICO (Windows-ikonen)
    JPG (Förenade Fotografers Expert Grupp)
    DIB (Enhetsoberoende bitmapp)
    DICOM (Digital bildbehandling och kommunikation)
    DJVU (Grafikformat)
    EMF (Förbättrat metafilformat)
    EMZ (Windows komprimerad förbättrad metafil)
    GIF (Grafiskt utbytesformat)
    JP2 (JPEG 2000)
    J2K (Wavelet komprimerad bild)
    PNG (Bärbar nätverksgrafik)
    TIFF (Taggad bildformat)
    WEBP (Raster webbbild)
    WMF (Microsoft Windows metafil)
    WMZ (Komprimerat Windows Media Player-skal)
    TGA (Targa grafik)
    SVG (Skalbar vektorgrafik)
    EPS (Inkapslat PostScript-språk)
    CDR (Vektor Ritning Bild)
    CMX (Corel Exchange-bild)
    OTG (OpenDocument Standard)
    ODG (Apache OpenOffice ritformat)