Notas de la versión de Aspose.PSD para .NET 19.5
Contents
[
Hide
]
Esta página contiene notas de la versión de Aspose.PSD para .NET 19.5
Clave | Descripción | Categoría |
---|---|---|
PSDNET-133 | Agregar soporte de capas de Relleno: Patrón | Característica |
PSDNET-138 | Soporte de PtFlResource | Característica |
PSDNET-129 | Implementar método de Recorte correcto para archivos PSD | Característica |
PSDNET-140 | Soporte de VsmsResource | Característica |
PSDNET-121 | Las capas visibles en la subcarpeta visible en la carpeta invisible se renderizan, pero no deberían | Error |
PSDNET-119 | PSD (modo RGB 16 bits por canal) no se convierte correctamente a JPG | Error |
Cambios en la API pública
APIs agregadas:
- T:Aspose.PSD.FileFormats.Psd.Layers.FillSettings.IPatternFillSettings
- P:Aspose.PSD.FileFormats.Psd.Layers.FillSettings.IPatternFillSettings.Linked
- P:Aspose.PSD.FileFormats.Psd.Layers.FillSettings.IPatternFillSettings.Scale
- P:Aspose.PSD.FileFormats.Psd.Layers.FillSettings.IPatternFillSettings.PointType
- P:Aspose.PSD.FileFormats.Psd.Layers.FillSettings.IPatternFillSettings.PatternName
- P:Aspose.PSD.FileFormats.Psd.Layers.FillSettings.IPatternFillSettings.PatternId
- P:Aspose.PSD.FileFormats.Psd.Layers.FillSettings.IPatternFillSettings.HorizontalOffset
- P:Aspose.PSD.FileFormats.Psd.Layers.FillSettings.IPatternFillSettings.VerticalOffset
- P:Aspose.PSD.FileFormats.Psd.Layers.FillSettings.IPatternFillSettings.PatternData
- P:Aspose.PSD.FileFormats.Psd.Layers.FillSettings.IPatternFillSettings.PatternWidth
- P:Aspose.PSD.FileFormats.Psd.Layers.FillSettings.IPatternFillSettings.PatternHeight
- P:Aspose.PSD.FileFormats.Psd.Layers.FillSettings.PatternFillSettings.AlignWithLayer
- P:Aspose.PSD.FileFormats.Psd.Layers.FillSettings.PatternFillSettings.PatternData
- P:Aspose.PSD.FileFormats.Psd.Layers.FillSettings.PatternFillSettings.PatternWidth
- P:Aspose.PSD.FileFormats.Psd.Layers.FillSettings.PatternFillSettings.PatternHeight
- T:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.PtFlResource
- M:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.PtFlResource.#ctor(System.String,System.String)
- P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.PtFlResource.Signature
- P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.PtFlResource.Key
- P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.PtFlResource.Length
- P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.PtFlResource.PsdVersion
- P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.PtFlResource.PatternName
- P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.PtFlResource.Offset
- P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.PtFlResource.Scale
- P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.PtFlResource.IsLinkedWithLayer
- P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.PtFlResource.AlignWithLayer
- P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.PtFlResource.PatternId
- M:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.PtFlResource.Save(Aspose.PSD.StreamContainer,System.Int32)
- F:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.PtFlResource.TypeToolKey
- T:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VectorPathDataResource
- M:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VectorPathDataResource.#ctor(System.Byte[])
- P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VectorPathDataResource.Paths
- P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VectorPathDataResource.Version
- P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VectorPathDataResource.IsDisabled
- P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VectorPathDataResource.IsNotLinked
- P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VectorPathDataResource.IsInverted
- P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VectorPathDataResource.Signature
- P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VectorPathDataResource.Length
- P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VectorPathDataResource.PsdVersion
- M:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VectorPathDataResource.Save(Aspose.PSD.StreamContainer,System.Int32)
- T:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VsmsResource
- M:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VsmsResource.#ctor(System.Byte[])
- P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VsmsResource.Key
- F:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VsmsResource.TypeToolKey
- M:Aspose.PSD.Image.DoAfterCreate(System.Int64@,System.Int64)
- P:Aspose.PSD.ImageOptionsBase.BufferSizeHint
- M:Aspose.PSD.Metered.GetConsumptionCredit
APIs eliminadas:
- P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VmskResource.Paths
- P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VmskResource.Version
- P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VmskResource.IsDisabled
- P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VmskResource.IsNotLinked
- P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VmskResource.IsInverted
- P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VmskResource.Signature
- P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VmskResource.Length
- P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VmskResource.PsdVersion
- M:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VmskResource.Save(Aspose.PSD.StreamContainer,System.Int32)
Ejemplos de uso:
PSDNET-133. Agregar soporte de capas de Relleno: Patrón
// Agregar soporte de capas de Relleno: Patrón
string nombreArchivoFuente = "CapaRellenoPatron.psd";
string rutaExportacion = "CapaRellenoPatron_Editada.psd";
double tolerancia = 0.0001;
var im = (PsdImage)Image.Load(nombreArchivoFuente);
using (im)
{
foreach (var capa in im.Layers)
{
if (capa is FillLayer)
{
FillLayer capaRelleno = (FillLayer)capa;
PatternFillSettings configuracionRelleno = (PatternFillSettings)capaRelleno.FillSettings;
if (configuracionRelleno.HorizontalOffset != -46 ||
configuracionRelleno.VerticalOffset != -45 ||
configuracionRelleno.PatternId != "a6818df2-7532-494e-9615-8fdd6b7f38e5"||
configuracionRelleno.PatternName != "$$$/Presets/Patterns/OpticalSquares=Optical Squares" ||
configuracionRelleno.AlignWithLayer != true ||
configuracionRelleno.Linked != true ||
configuracionRelleno.PatternHeight != 64 ||
configuracionRelleno.PatternWidth != 64 ||
configuracionRelleno.PatternData.Length != 4096 ||
Math.Abs(configuracionRelleno.Scale - 50) > tolerancia)
{
throw new Exception("La imagen PSD se leyó incorrectamente");
}
// Edición
configuracionRelleno.Scale = 300;
configuracionRelleno.HorizontalOffset = 2;
configuracionRelleno.VerticalOffset = -20;
configuracionRelleno.PatternData = new int[]
{
Color.Red.ToArgb(), Color.Blue.ToArgb(), Color.Blue.ToArgb(),
Color.Blue.ToArgb(), Color.Red.ToArgb(), Color.Blue.ToArgb(),
Color.Blue.ToArgb(), Color.Blue.ToArgb(), Color.Red.ToArgb()
};
configuracionRelleno.PatternHeight = 3;
configuracionRelleno.PatternWidth = 3;
configuracionRelleno.AlignWithLayer = false;
configuracionRelleno.Linked = false;
configuracionRelleno.PatternId = Guid.NewGuid().ToString();
capaRelleno.Update();
break;
}
}
im.Save(rutaExportacion);
}
PSDNET-138. Soporte de PtFlResource
// Soporte de PtFlResource
string nombreArchivoFuente = "CapaRellenoPatron.psd";
string rutaExportacion = "PtFlResource_Editada.psd";
double tolerancia = 0.0001;
var im = (PsdImage)Image.Load(nombreArchivoFuente);
using (im)
{
foreach (var capa in im.Layers)
{
if (capa is FillLayer)
{
var capaRelleno = (FillLayer)capa;
var recursos = capaRelleno.Resources;
foreach (var res in recursos)
{
if (res is PtFlResource)
{
// Lectura
PtFlResource recurso = (PtFlResource)res;
if (
recurso.Offset.X != -46 ||
recurso.Offset.Y != -45 ||
recurso.PatternId != "a6818df2-7532-494e-9615-8fdd6b7f38e5\0" ||
recurso.PatternName != "$$$/Presets/Patterns/OpticalSquares=Optical Squares\0" ||
recurso.AlignWithLayer != true ||
recurso.IsLinkedWithLayer != true ||
!(Math.Abs(recurso.Scale - 50) < tolerancia)) {
throw new Exception("El recurso PtFl se leyó incorrectamente");
}
// Edición
recurso.Offset = new Point(-11, 13);
recurso.Scale = 200;
recurso.AlignWithLayer = false;
recurso.IsLinkedWithLayer = false;
capaRelleno.Resources = capaRelleno.Resources;
// No tenemos datos de patrón en PattResource, así que podemos agregarlo.
var configuracionRelleno = (PatternFillSettings)capaRelleno.FillSettings;
configuracionRelleno.PatternData = new int[]
{
Color.Black.ToArgb(),
Color.White.ToArgb(),
Color.White.ToArgb(),
Color.White.ToArgb(),
};
configuracionRelleno.PatternHeight = 1;
configuracionRelleno.PatternWidth = 4;
configuracionRelleno.PatternName = "$$$/Presets/Patterns/VerticalLine=Vertical Line New\0";
configuracionRelleno.PatternId = Guid.NewGuid().ToString() + "\0";
capaRelleno.Update();
}
break;
}
break;
}
}
im.Save(rutaExportacion);
}
PSDNET-129. Implementar método de Recorte correcto para archivos PSD
// Implementar método de Recorte correcto para archivos PSD.
string nombreArchivoFuente = "1.psd";
string rutaExportacionPsd = "PruebaRecorte.psd";
string rutaExportacionPng = "PruebaRecorte.png";
using (RasterImage imagen = Image.Load(nombreArchivoFuente) as RasterImage)
{
imagen.Crop(new Rectangle(10, 30, 100, 100));
imagen.Save(rutaExportacionPsd, new PsdOptions());
imagen.Save(rutaExportacionPng, new PngOptions() { ColorType = PngColorType.TruecolorWithAlpha });
}
PSDNET-140. Soporte de VsmsResource
// Soporte de VsmsResource
static void EjemploDeSoporteDeVsmsResource()
{
string nombreArchivoFuente = "RectanguloVacio.psd";
string rutaExportacion = "RectanguloVacio_cambiado.psd";
var im = (PsdImage)Image.Load(nombreArchivoFuente);
using (im)
{
var recurso = ObtenerVsmsResource(im);
// Lectura
if (recurso.IsDisabled != false ||
recurso.IsInverted != false ||
recurso.IsNotLinked != false ||
recurso.Paths.Length != 7 ||
recurso.Paths[0].Type != VectorPathType.PathFillRuleRecord ||
recurso.Paths[1].Type != VectorPathType.InitialFillRuleRecord ||
recurso.Paths[2].Type != VectorPathType.ClosedSubpathLengthRecord ||
recurso.Paths[3].Type != VectorPathType.ClosedSubpathBezierKnotUnlinked ||
recurso.Paths[4].Type != VectorPathType.ClosedSubpathBezierKnotUnlinked ||
recurso.Paths[5].Type != VectorPathType.ClosedSubpathBezierKnotUnlinked||
recurso.Paths[6].Type != VectorPathType.ClosedSubpathBezierKnotUnlinked)
{
throw new Exception("El recurso Vsms se leyó incorrectamente");
}
var pathFillRule = (PathFillRuleRecord)recurso.Paths[0];
var initialFillRule = (InitialFillRuleRecord)recurso.Paths[1];
var subpathLength = (LengthRecord)recurso.Paths[2];
// La regla de relleno de ruta no contiene información adicional
if (pathFillRule.Type != VectorPathType.PathFillRuleRecord ||
initialFillRule.Type != VectorPathType.InitialFillRuleRecord ||
initialFillRule.IsFillStartsWithAllPixels != false ||
subpathLength.Type != VectorPathType.ClosedSubpathLengthRecord ||
subpathLength.IsClosed != true ||
subpathLength.IsOpen != false)
{
throw new Exception("Los caminos del recurso Vsms se leyeron incorrectamente");
}
// Edición
recurso.IsDisabled = true;
recurso.IsInverted = true;
recurso.IsNotLinked = true;
var bezierKnot = (BezierKnotRecord)recurso.Paths[3];
bezierKnot.Points[0] = new Point(0, 0);
bezierKnot = (BezierKnotRecord)recurso.Paths[4];
bezierKnot.Points[0] = new Point(8039798, 10905191);
initialFillRule.IsFillStartsWithAllPixels = true;
subpathLength.IsClosed = false;
im.Save(rutaExportacion);
}
}
static VsmsResource ObtenerVsmsResource(PsdImage imagen)
{
var capa = imagen.Layers[1];
VsmsResource recurso = null;
var recursos = capa.Resources;
for (int i = 0; i < recursos.Length; i++)
{
if (recursos[i] is VsmsResource)
{
recurso = (VsmsResource)recursos[i];
break;
}
}
if (recurso == null)
{
throw new Exception("Recurso Vsms no encontrado");
}
return recurso;
}
PSDNET-121: Las capas visibles en la subcarpeta visible en la carpeta invisible se renderizan, pero no deberían
// Las capas visibles en la subcarpeta visible en la carpeta invisible se renderizan, pero no deberían
string nombreArchivoFuente = "MuchasCarpetas.psd.psd";
string rutaArchivoSalidaJpg = "carpetasSalida.jpg";
string rutaArchivoSalidaPsd = "carpetasSalida.psd";
var opciones = new PsdLoadOptions();
using (PsdImage imagen = (PsdImage)Image.Load(nombreArchivoFuente, opciones))
{
imagen.Save(rutaArchivoSalidaPsd, new PsdOptions(imagen));
imagen.Save(rutaArchivoSalidaJpg, new JpegOptions() { Quality = 100 });
}
PSDNET-119. PSD (modo RGB 16 bits por canal) no se convierte correctamente a JPG
// PSD no se convierte correctamente a jpg
string nombreArchivoFuente = "in.psd";
string rutaExportacion = "outRgb.jpg";
var opciones = new PsdLoadOptions();
using (PsdImage imagen = (PsdImage)Image.Load(nombreArchivoFuente, opciones))
{
imagen.Save(rutaExportacion, new JpegOptions() { Quality = 100 });
}