Interface ISmartObjectLayerResource
Contenido
[
Ocultar
]ISmartObjectLayerResource interface
Define la interfaz ISmartObjectLayerResource que contiene información sobre un recurso de capa de objeto inteligente en el archivo PSD. También es una interfaz de marcado utilizada para designar recursos Vendidos y Únicos en las imágenes de Adobe® Photoshop®.
public interface ISmartObjectLayerResource : IPlacedLayerResource
Propiedades
Nombre | Descripción |
---|---|
PlacedId { get; set; } | Obtiene o establece el identificador único de los datos de esta capa de objeto inteligente en la imagen PSD. |
Ejemplos
El código siguiente demuestra la compatibilidad con los objetos inteligentes integrados.
[C#]
void AssertAreEqual(object actual, object expected)
{
if (!object.Equals(actual, expected))
{
throw new FormatException(string.Format("Actual value {0} are not equal to expected {1}.", actual, expected));
}
}
// Este ejemplo demuestra cómo cambiar la capa del objeto inteligente en el archivo PSD y exportar/actualizar el contenido incrustado original del objeto inteligente.
const int left = 0;
const int top = 0;
const int right = 0xb;
const int bottom = 0x10;
FileFormat[] formats = new[]
{
FileFormat.Png, FileFormat.Psd, FileFormat.Bmp, FileFormat.Jpeg, FileFormat.Gif, FileFormat.Tiff, FileFormat.Jpeg2000
};
foreach (FileFormat format in formats)
{
string formatString = format.ToString().ToLowerInvariant();
string formatExt = format == FileFormat.Jpeg2000 ? "jpf" : formatString;
string fileName = "r-embedded-" + formatString;
string sourceFilePath = fileName + ".psd";
string pngOutputPath = fileName + "_output.png";
string psdOutputPath = fileName + "_output.psd";
string png2OutputPath = fileName + "_updated.png";
string psd2OutputPath = fileName + "_updated.psd";
string exportPath = fileName + "_export." + formatExt;
using (PsdImage image = (PsdImage)Image.Load(sourceFilePath))
{
var smartObjectLayer = (SmartObjectLayer)image.Layers[0];
AssertAreEqual(left, smartObjectLayer.ContentsBounds.Left);
AssertAreEqual(top, smartObjectLayer.ContentsBounds.Top);
AssertAreEqual(right, smartObjectLayer.ContentsBounds.Right);
AssertAreEqual(bottom, smartObjectLayer.ContentsBounds.Bottom);
// Exportemos la imagen del objeto inteligente incrustado desde la capa de objetos inteligentes PSD
smartObjectLayer.ExportContents(exportPath);
// Verifiquemos si la imagen original se guardó correctamente
image.Save(psdOutputPath, new PsdOptions(image));
image.Save(pngOutputPath, new PngOptions() { ColorType = PngColorType.TruecolorWithAlpha });
using (var innerImage = (RasterImage)smartObjectLayer.LoadContents(null))
{
AssertAreEqual(format, innerImage.FileFormat);
// Vamos a invertir la imagen original del objeto inteligente
var pixels = innerImage.LoadArgb32Pixels(innerImage.Bounds);
for (int i = 0; i < pixels.Length; i++)
{
var pixel = pixels[i];
var alpha = (int)(pixel & 0xff000000);
pixels[i] = (~(pixel & 0x00ffffff)) | alpha;
}
innerImage.SaveArgb32Pixels(innerImage.Bounds, pixels);
// Reemplacemos la imagen del objeto inteligente incrustado en la capa PSD
smartObjectLayer.ReplaceContents(innerImage);
}
// Verifiquemos si la imagen actualizada se guardó correctamente
image.Save(psd2OutputPath, new PsdOptions(image));
image.Save(png2OutputPath, new PngOptions() { ColorType = PngColorType.TruecolorWithAlpha });
}
}
Ver también
- interface IPlacedLayerResource
- espacio de nombres Aspose.PSD.FileFormats.Psd.Layers.LayerResources
- asamblea Aspose.PSD