PPTX DOCX XLSX PDF ODP
Aspose.Imaging  pour .NET
DNG

Supprimer l’arrière-plan des DNG via C#

Créez vos propres applications .NET pour supprimer l’arrière-plan des fichiers DNG à l’aide d’API côté serveur.

Comment supprimer l'arrière-plan dans les fichiers DNG à l'aide de C#

Supprimer l’arrière-plan d’une image implique d’isoler les objets du premier plan, une tâche qui nécessite la reconnaissance des objets. Plusieurs approches existent pour identifier les objets dans une photo au format DNG. Pour des images simples présentant un fond de couleur uniforme, une méthode automatique suffit. Cependant, pour les photos comportant plusieurs figures ou partiellement fusionnées, un pré-marquage des objets devient nécessaire. Cela implique de spécifier des régions rectangulaires et des types d’objets à supprimer. Dans les cas complexes, l’API Cloud permet la détection automatique des objets. L’API Cloud fournit une application cloud capable de reconnaître les objets dans les photos, en exploitant les contours résultants pour la suppression de l’arrière-plan. Après la suppression, les bords laissés par les personnages peuvent être lissés pour améliorer la qualité de l’image. Afin de supprimer l’arrière-plan dans les fichiers DNG, nous utiliserons Aspose.Imaging pour .NET API qui est une API de manipulation et de conversion d’images riche en fonctionnalités, puissante et facile à utiliser pour la plate-forme C #. Ouvrir NuGet gestionnaire de paquets, recherchez Aspose.Imaging et installer. Vous pouvez également utiliser la commande suivante à partir de la console du gestionnaire de packages.

Commande de la console du gestionnaire de packages


PM> Install-Package Aspose.Imaging

Étapes pour supprimer l'arrière-plan des DNG via C#

Vous avez besoin du aspose.imaging.dll pour essayer le workflow suivant dans votre propre environnement.

  • Charger les fichiers DNG avec la méthode Image.Load
  • Supprimer l’arrière-plan ;
  • Enregistrer l’image sur le disque au format pris en charge par Aspose.Imaging

Configuration requise

Aspose.Imaging pour .NET est pris en charge sur tous les principaux systèmes d’exploitation. Assurez-vous simplement que vous disposez des prérequis suivants.

  • Microsoft Windows ou un système d’exploitation compatible avec .NET Framework, .NET Core, Windows Application, ASP.NET Web Application.
  • Environnement de développement comme Microsoft Visual Studio.
  • Aspose.Imaging pour .NET référencé dans votre projet.
 

Supprimer l'arrière-plan dans les images DNG - .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();
}
}
 
  • À propos de l'API Aspose.Imaging pour .NET

    Aspose.Imaging API est une solution de traitement d’images pour créer, modifier, dessiner ou convertir des images (photos) au sein d’applications. Il offre : le traitement d’image multiplateforme, y compris, mais sans s’y limiter, les conversions entre différents formats d’image (y compris le traitement d’image multipage ou multicadre uniforme), les modifications telles que le dessin, l’utilisation de primitives graphiques, les transformations (redimensionner, recadrer, retourner et faire pivoter , binarisation, niveaux de gris, ajustement), fonctionnalités avancées de manipulation d’images (filtrage, tramage, masquage, redressement) et stratégies d’optimisation de la mémoire. C’est une bibliothèque autonome et ne dépend d’aucun logiciel pour les opérations d’image. On peut facilement ajouter des fonctionnalités de conversion d’image hautes performances avec des API natives dans les projets. Ce sont des API sur site 100 % privées et les images sont traitées sur vos serveurs.

    Supprimer l’arrière-plan dans les DNG via l’application en ligne

    Supprimez l’arrière-plan des documents DNG en visitant notre site Web de démonstrations en direct . La démo en direct présente les avantages suivants

      Pas besoin de télécharger ou de configurer quoi que ce soit
      Pas besoin d'écrire de code
      Téléchargez simplement vos fichiers DNG et appuyez sur le bouton "Supprimer l'arrière-plan maintenant"
      Obtenez instantanément le lien de téléchargement du fichier résultant

    DNG Qu'est-ce que DNG Format de fichier

    DNG est un format d'image d'appareil photo numérique utilisé pour le stockage de fichiers bruts. Il a été développé par Adobe en septembre 2004. Il a été essentiellement développé pour la photographie numérique. DNG est une extension du format standard TIFF/EP et utilise les métadonnées de manière significative. Afin de manipuler les données brutes des appareils photo numériques avec une grande souplesse et un contrôle artistique, les photographes optent pour les fichiers Camera Raw. Les formats JPEG et TIFF stockent des images qui sont traitées par l'appareil photo, donc peu de place pour la modification est disponible dans ces formats.

    Lire la suite

    Autres formats de suppression d'arrière-plan pris en charge

    En utilisant C#, on peut facilement supprimer l'arrière-plan de différents formats, y compris.

    APNG (Graphiques de réseau portables animés)
    BMP (Image bitmap)
    ICO (Icône Windows)
    JPG (Groupe mixte d'experts photographiques)
    DIB (Bitmap indépendant du périphérique)
    DICOM (Imagerie numérique et communications)
    DJVU (Format graphique)
    EMF (Format de métafichier amélioré)
    EMZ (Métafichier amélioré compressé Windows)
    GIF (Format d'échange graphique)
    JP2 (JPEG 2000)
    J2K (Image compressée en ondelettes)
    PNG (Portable Network Graphics)
    TIFF (Format d'image balisé)
    WEBP (Image Web raster)
    WMF (Métafichier Microsoft Windows)
    WMZ (Skin du lecteur Windows Media compressé)
    TGA (Graphique Targa)
    SVG (Image Vectorielle)
    EPS (Langage PostScript encapsulé)
    CDR (Image de dessin vectoriel)
    CMX (Image d'échange Corel)
    OTG (Norme OpenDocument)
    ODG (Format de dessin Apache OpenOffice)