Notas de la versión de Aspose.PSD para .NET 18.8
Contents
[
Hide
]
Clave | Resumen | Categoría |
---|---|---|
PSDNET-68 | Soporte de la propiedad LayerCreationDateTime. | Característica |
PSDNET-67 | Soporte de SheetColor Highlighting | Característica |
PSDNET-66 | Capacidad de fusionar capas una con otra | Característica |
PSDNET-65 | Agregar soporte parcial de la propiedad Text Layer BoundBox | Característica |
PSDNET-64 | Agregar soporte para IopaResource | Característica |
PSDNET-56 | Soporte de efectos de capas para formato PSD | Característica |
PSDNET-55 | Soporte InterruptMonitor para .Net | Característica |
PSDNET-50 | Hacer posible aplanar capas | Característica |
PSDNET-49 | Agregar la representación de la propiedad de opacidad de relleno en capas. | Característica |
PSDNET-43 | Implementar la representación de la capa de ajuste Curvas | Característica |
PSDNET-42 | Agregar soporte de capa de ajuste Curvas | Característica |
PSDNET-41 | Implementar la representación de la capa de ajuste Niveles | Característica |
PSDNET-40 | Agregar soporte de la capa de ajuste Niveles | Característica |
PSDNET-37 | Agregar soporte de capa de ajuste Mezclador de Canales | Característica |
PSDNET-35 | Agregar soporte de capa de ajuste Tono/Saturación | Característica |
PSDNET-34 | Implementar la representación de la capa de ajuste de Exposición para exportación. | Característica |
PSDNET-31 | Agregar soporte de representación para exportación de capas de ajuste ChannelMixer | Característica |
PSDNET-26 | Agregar soporte de máscara de recorte | Característica |
PSDNET-13 | Agregar soporte de la máscara de capa | Característica |
PSDNET-9 | Agregar soporte de capa de ajuste Filtro fotográfico | Característica |
PSDNET-8 | Agregar soporte de capa de ajuste Mezclador de Canales | Característica |
PSDNET-7 | Agregar soporte de capa de ajuste de Exposición | Característica |
PSDNET-6 | Agregar soporte de capa de ajuste Brillo/Contraste | Característica |
PSDNET-5 | Agregar soporte parcial de capas de ajuste | Característica |
PSDNET-3 | Agregar soporte para la opción de texto PSD NoBreak | Característica |
PSDNET-2 | Capacidad de agregar capa de texto en tiempo de ejecución | Característica |
PSDNET-62 | El Códec TIFF no puede guardar imágenes de canales de 16 bits | Mejora |
PSDNET-61 | La realización de imágenes PSD produce colores de imagen no válidos | Mejora |
PSDNET-60 | La coordenada de la esquina superior izquierda es incorrecta al actualizar | Mejora |
PSDNET-59 | Excepción al actualizar capas de texto | Mejora |
PSDNET-58 | Exponer la propiedad Codec de la imagen JPEG2000 al público | Mejora |
PSDNET-57 | Corregir la configuración de opciones de 24bpp para exportar a BMP | Mejora |
PSDNET-46 | La capa de ajuste se ignoró para la conversión de PSD CMYK a TIFF o JPG | Mejora |
Ejemplos de uso:
PSDNET-68 Soporte de la propiedad LayerCreationDateTime
// Ejemplo de propiedad LayerCreationDateTime
string nombreArchivoFuente = "CapaUno.psd";
using (var im = (PsdImage)(Image.Load(nombreArchivoFuente)))
{
var capa = im.Layers[0];
var fechaCreacion = capa.LayerCreationDateTime;
var fechaHoraEsperada = new DateTime(2018, 7, 17, 8, 57, 24, 769);
Assert.AreEqual(fechaHoraEsperada, fechaCreacion);
var ahora = DateTime.Now;
var capaCreada = im.AddLevelsAdjustmentLayer();
// Verificar si la Fecha y Hora de Creación se actualizó en las nuevas capas creadas
Assert.True(ahora <= capaCreada.LayerCreationDateTime);
}
PSDNET-67 Soporte de SheetColor Highlighting
// Uso del ejemplo de la propiedad SheetColorHighlight
string nombreArchivoFuente = "EjemploHojaColorResaltado.psd";
string rutaExportación = "EjemploHojaColorResaltadoCambiado.psd";
using (var im = (PsdImage)(Image.Load(nombreArchivoFuente)))
{
var capa1 = im.Layers[0];
Assert.AreEqual(SheetColorHighlightEnum.Violet, capa1.SheetColorHighlight);
var capa2 = im.Layers[1];
Assert.AreEqual(SheetColorHighlightEnum.Orange, capa2.SheetColorHighlight);
capa1.SheetColorHighlight = SheetColorHighlightEnum.Yellow;
im.Save(rutaExportación);
}
PSDNET-66 Capacidad de fusionar capas una con otra
// Ejemplo de fusionar dos capas
var archivoFuente1 = "MuestraOpacidadRelleno.psd";
var archivoFuente2 = "TresCapasRegularesSemitransparente.psd";
var rutaExportación = "CapasFusionadasDeDosPsdDiferentes.psd";
using (var im1 = (PsdImage)(Image.Load(archivoFuente1)))
{
var capa1 = im1.Layers[1];
using (var im2 = (PsdImage)(Image.Load(archivoFuente2))
{
var capa2 = im2.Layers[0];
capa1.MergeLayerTo(capa2);
im2.Save(rutaExportación);
}
}
PSDNET-65 Agregar soporte parcial de la propiedad Text Layer BoundBox
// Ejemplo de cuadro de texto
string nombreArchivoFuente = "CapaConTexto.psd";
var tamañoÓpticoCorrecto = new Size(127, 45);
var cuadroLímiteCorrecto = new Size(172, 62);
using (var im = (PsdImage)(Image.Load(nombreArchivoFuente))
{
var capaTexto = (TextLayer)im.Layers[1];
// El tamaño de la capa es el tamaño del área renderizada
var tamañoÓptico = capaTexto.Size;
Assert.AreEqual(tamañoÓpticoCorrecto, tamañoÓptico);
// TextBoundBox es el tamaño máximo de la capa para la capa de texto.
// En esta área PS intentará ajustar tu texto
var cuadroLímite = capaTexto.TextBoundBox;
Assert.AreEqual(cuadroLímiteCorrecto, cuadroLímite);
}
PSDNET-64 Agregar soporte para IopaResource
// Cambiar la propiedad de Opacidad de Relleno mediante el cambio de IopaResource
string nombreArchivoFuente = "MuestraOpacidadRelleno.psd";
string rutaExportación = "MuestraOpacidadRellenoCambiada.psd";
using (var im = (PsdImage)(Image.Load(nombreArchivoFuente))
{
var capa = im.Layers[2];
var recursos = capa.Resources;
foreach (var recurso in recursos)
{
if (recurso is IopaResource)
{
var recursoIopa = (IopaResource)recurso;
recursoIopa.FillOpacity = 200;
}
}
im.Save(rutaExportación);
}
PSDNET-56 Soporte de efectos de capas para formato PSD
using (
PsdImage imagen =
(PsdImage)
Aspose.PSD.Image.Load(
nombreArchivoFuente,
new Aspose.PSD.ImageLoadOptions.PsdLoadOptions()
{
LoadEffectsResource = true,
UseDiskForLoadEffectsResource = true
}))
{
imagen.Save(
salida,
new Aspose.PSD.ImageOptions.PngOptions()
{
ColorType =
Aspose.PSD.FileFormats.Png
.PngColorType
.TruecolorWithAlpha
});
}
PSDNET-55 Soporte InterruptMonitor para .Net
public void PruebaMonitorInterrupción(string dir, string dirSalida)
{
ImageOptionsBase opcionesGuardar = new ImageOptions.PngOptions();
Multithreading.InterruptMonitor monitor = new Multithreading.InterruptMonitor();
SaveImageWorker worker = new SaveImageWorker(dir + "gran.psb", dir + "gran_salida.png", opcionesGuardar, monitor);
System.Threading.Thread thread = new System.Threading.Thread(new System.Threading.ThreadStart(worker.ThreadProc));
try
{
thread.Start();
// El tiempo de espera debe ser menor que el tiempo requerido para la conversión de la imagen completa (sin interrupción).
System.Threading.Thread.Sleep(3000);
// Interrumpir el proceso
monitor.Interrupt();
System.Console.WriteLine("Interrumpiendo el hilo de guardado #{0} en {1}", thread.ManagedThreadId, System.DateTime.Now);
// Esperar la interrupción...
thread.Join();
}
finally
{
// Si el archivo a borrar no existe, no se produce ninguna excepción.
System.IO.File.Delete(dir + "gran_salida.png");
}
}
/// <summary>
/// Inicia la conversión de imagen y espera su interrupción.
/// </summary>
private class SaveImageWorker
{
/// <summary>
/// La ruta de la imagen de entrada.
/// </summary>
private readonly string rutaEntrada;
/// <summary>
/// La ruta de la imagen de salida.
/// </summary>
private readonly string rutaSalida;
/// <summary>
/// El monitor de interrupción.
/// </summary>
private readonly Multithreading.InterruptMonitor monitor;
/// <summary>
/// Las opciones de guardado.
/// </summary>
private readonly ImageOptionsBase opcionesGuardar;
/// <summary>
/// Inicializa una nueva instancia de la clase <see cref="SaveImageWorker" />.
/// </summary>
/// <param name="rutaEntrada">La ruta de la imagen de entrada.</param>
/// <param name="rutaSalida">La ruta de la imagen de salida.</param>
/// <param name="opcionesGuardar">Las opciones de guardado.</param>
/// <param name="monitor">El monitor de interrupción.</param>
public SaveImageWorker(string rutaEntrada, string rutaSalida, ImageOptionsBase opcionesGuardar, Multithreading.InterruptMonitor monitor)
{
this.rutaEntrada = rutaEntrada;
this.rutaSalida = rutaSalida;
this.opcionesGuardar = opcionesGuardar;
this.monitor = monitor;
}
/// <summary>
/// Intenta convertir una imagen de un formato a otro. Maneja la interrupción.
/// </summary>
public void ThreadProc()
{
using (Image imagen = Image.Load(this.rutaEntrada))
{
Multithreading.InterruptMonitor.ThreadLocalInstance = this.monitor;
try
{
imagen.Save(this.rutaSalida, this.opcionesGuardar);
Assert.Fail("Se esperaba una interrupción.");
}
catch (CoreExceptions.OperationInterruptedException e)
{
System.Console.WriteLine("El hilo de guardado #{0} finaliza en {1}", System.Threading.Thread.CurrentThread.ManagedThreadId, System.DateTime.Now);
System.Console.WriteLine(e);
}
catch (System.Exception e)
{
System.Console.WriteLine(e);
}
finally
{
Multithreading.InterruptMonitor.ThreadLocalInstance = null;
}
}
}
}