Notas de la versión de Aspose.PSD para Java 20.5
Clave | Resumen | Categoría |
---|---|---|
PSDJAVA-188 | Soporte para progreso de conversión de documentos | Funcionalidad |
PSDJAVA-197 | Soporte de imagen PSD de modo de color en escala de grises con 16 bits por canal ahorro | Funcionalidad |
PSDJAVA-198 | Soporte de Recurso Nvrt (Recurso de Capa de Ajuste de Inversión) | Funcionalidad |
PSDJAVA-200 | Soporte de Máscaras de Capa para Grupos de Capas | Funcionalidad |
PSDJAVA-195 | Corregir el guardado de imagen PSD con modo de color en escala de grises de 16 bits por canal al formato PSD de 16 bits por canal RGB | Error |
PSDJAVA-196 | Corregir el guardado de imagen PSD con modo de color en escala de grises de 16 bits por canal al formato PSD de escala de grises de 8 bits por canal | Error |
PSDJAVA-199 | El alineamiento de texto a través de ITextPortion no funciona para idiomas de derecha a izquierda. El archivo de salida está dañado. | Error |
PSDJAVA-201 | Excepción al intentar abrir un archivo Psd en particular con Color Lab y 8 bit/canal | Error |
Cambios en la API Pública
APIs Agregadas:
- Ninguna
APIs Eliminadas:
- Ninguna
Ejemplos de uso:
PSDJAVA-188. Soporte para progreso de conversión de documentos
// Un ejemplo de uso del controlador de progreso para operaciones de carga y guardado.
// El programa utiliza diferentes opciones de guardado para activar eventos de progreso.
String sourceFilePath = "Apple.psd";
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
// Crear un controlador de progreso que escribe información de progreso en la consola
ProgressEventHandler localProgressEventHandler = new ProgressEventHandler()
{
@Override
public void invoke(ProgressEventHandlerInfo progressInfo)
{
String message = String.format(
"%s %s: %s de %s",
progressInfo.getDescription(),
Enum.getName(EventType.class, progressInfo.getEventType()),
progressInfo.getValue(),
progressInfo.getMaxValue());
System.out.println(message);
}
};
System.out.println("---------- Cargando Apple.psd ----------");
PsdLoadOptions loadOptions = new PsdLoadOptions();
// Vincular el controlador de progreso para mostrar el progreso de carga
loadOptions.setProgressEventHandler(localProgressEventHandler);
// Cargar PSD usando opciones de carga específicas
PsdImage image = (PsdImage)Image.load(sourceFilePath, loadOptions);
try
{
System.out.println("---------- Guardando Apple.psd en formato PNG ----------");
PngOptions pngOptions = new PngOptions();
// Hacer que la imagen de salida tenga color y no sea transparente
pngOptions.setColorType(PngColorType.Truecolor);
// Vincular el controlador de progreso para mostrar el progreso de guardado
pngOptions.setProgressEventHandler(localProgressEventHandler);
// Convertir PSD a PNG con características específicas
image.save(outputStream, pngOptions);
System.out.println("---------- Guardando Apple.psd en formato PSD ----------");
PsdOptions psdOptions = new PsdOptions();
// Hacer que el PSD de salida sea en color
psdOptions.setColorMode(ColorModes.Rgb);
// Establecer un canal para cada color (rojo, verde y azul) más un canal compuesto
psdOptions.setChannelsCount((short)4);
// Vincular el controlador de progreso para mostrar el progreso de guardado
psdOptions.setProgressEventHandler(localProgressEventHandler);
// Guardar una copia de PSD con características específicas
image.save(outputStream, psdOptions);
}
finally
{
image.dispose();
}
PSDJAVA-197. Soporte de imagen PSD con modo de color en escala de grises con 16 bits por canal
// Un ejemplo de aplicación de diferentes combinaciones de modos de color, bits por canal, conteo de canales
// y compresiones para capas específicas.
// Hacer que un método sea accesible desde el ámbito local
class LocalScopeExtension
{
void saveToPsdThenLoadAndSaveToPng(
String file,
short colorMode,
short channelBitsCount,
short channelsCount,
short compression,
int layerNumber)
{
String filePath = file + ".psd";
String postfix = Enum.getName(ColorModes.class, colorMode) + channelBitsCount + "_" +
channelsCount + "_" + Enum.getName(CompressionMethod.class, compression);
String exportPath = file + postfix + ".psd";
String pngExportPath = file + postfix + ".png";
// Cargar un PSD en escala de grises de 16 bits predefinido
PsdImage image = (PsdImage)Image.load(filePath);
try
{
RasterCachedImage raster = layerNumber >= 0 ? image.getLayers()[layerNumber] : image;
// Dibujar un borde interior gris alrededor del perímetro de la capa
Graphics graphics = new Graphics(raster);
int width = raster.getWidth();
int height = raster.getHeight();
Rectangle rect = new Rectangle(
width / 3,
height / 3,
width - (2 * (width / 3)) - 1,
height - (2 * (height / 3)) - 1);
graphics.drawRectangle(new Pen(Color.getDarkGray(), 1), rect);
// Guardar una copia de PSD con características específicas
PsdOptions psdOptions = new PsdOptions();
psdOptions.setColorMode(colorMode);
psdOptions.setChannelBitsCount(channelBitsCount);
psdOptions.setChannelsCount(channelsCount);
psdOptions.setCompressionMethod(compression);
image.save(exportPath, psdOptions);
}
finally
{
image.dispose();
}
// Cargar el PSD guardado
PsdImage image1 = (PsdImage)Image.load(exportPath);
try
{
// Convertir el PSD guardado en una imagen PNG en escala de grises
PngOptions pngOptions = new PngOptions();
pngOptions.setColorType(PngColorType.GrayscaleWithAlpha);
image1.save(pngExportPath, pngOptions); // aquí no debería haber excepción
}
finally
{
image1.dispose();
}
}
}
LocalScopeExtension $ = new LocalScopeExtension();
$.saveToPsdThenLoadAndSaveToPng("grayscale5x5", ColorModes.Cmyk, (short)16, (short)5, CompressionMethod.RLE, 0);
$.saveToPsdThenLoadAndSaveToPng("argb16bit_5x5", ColorModes.Grayscale, (short)16, (short)2, CompressionMethod.RLE, 0);
$.saveToPsdThenLoadAndSaveToPng("argb16bit_5x5_sin_capas", ColorModes.Grayscale, (short)16, (short)2, CompressionMethod.RLE, -1);
$.saveToPsdThenLoadAndSaveToPng("argb8bit_5x5", ColorModes.Grayscale, (short)16, (short)2, CompressionMethod.RLE, 0);
$.saveToPsdThenLoadAndSaveToPng("argb8bit_5x5_sin_capas", ColorModes.Grayscale, (short)16, (short)2, CompressionMethod.RLE, -1);
$.saveToPsdThenLoadAndSaveToPng("cmyk16bit_5x5_sin_capas", ColorModes.Grayscale, (short)16, (short)2, CompressionMethod.RLE, -1);
$.saveToPsdThenLoadAndSaveToPng("index8bit_5x5", ColorModes.Grayscale, (short)16, (short)2, CompressionMethod.RLE, -1);
PSDJAVA-198. Soporte del Recurso Nvrt (Recurso de Capa de Ajuste de Inversión)
// Un ejemplo de cómo encontrar el Recurso Nvrt de una capa de ajuste de inversión.
String inPsdFilePath = "CapaDeAjusteDeInversion.psd";
NvrtResource nvrtResource = null;
// Cargar un PSD predefinido que contiene una capa de ajuste de inversión
PsdImage psdImage = (PsdImage)Image.load(inPsdFilePath);
try
{
// Intentar encontrar un recurso de la capa de ajuste de inversión
for (Layer layer : psdImage.getLayers())
{
if (layer instanceof InvertAdjustmentLayer)
{
for (LayerResource layerResource : layer.getResources())
{
if (layerResource instanceof NvrtResource)
{
// Se encontró el Recurso Nvrt
nvrtResource = (NvrtResource)layerResource;
break;
}
}
}
}
}
finally
{
psdImage.dispose();
}
PSDJAVA-200. Soporte de Máscaras de Capa para Grupos de Capas
// Un ejemplo de soporte de máscaras de capa para grupos de capas. El programa carga y guarda PSD
// a diferentes formatos de salida sin lanzar excepciones.
String srcFile = "psdnet595.psd";
String outputPng = "salida.png";
String outputPsd = "salida.psd";
// Cargar un PSD predefinido que contiene máscaras de capa para grupos de capas
PsdImage input = (PsdImage)Image.load(srcFile);
try
{
// Convertir el PSD cargado a PNG
input.save(outputPng, new PngOptions());
// Guardar una copia del PSD
input.save(outputPsd);
}
finally
{
input.dispose();
}
PSDJAVA-195. Corregir el guardado de imagen PSD con modo de color en escala de grises de 16 bits por canal al formato PSD de 16 bits por canal RGB
// Un ejemplo de convertir un PSD en escala de grises de 16 bits en uno RGB de 16 bits y luego de regreso a
// imagen en escala de grises de 16 bits pero con una imagen ráster.
String sourceFilePath = "escalaDeGrises5x5.psd";
String exportFilePath = "salida_rgb16bits5x5.psd";
String pngExportPath = "salida_rgb16bits5x5.png";
// Cargar un PSD en escala de grises de 16 bits predefinido
PsdImage image = (PsdImage)Image.load(sourceFilePath);
try
{
RasterCachedImage raster = image.getLayers()[0];
// Dibujar un borde interior gris alrededor del perímetro de la capa
Graphics graphics = new Graphics(raster);
int width = raster.getWidth();
int height = raster.getHeight();
Rectangle rect = new Rectangle(width / 3, height / 3, width - (2 * (width / 3)) - 1, height - (2 * (height / 3)) - 1);
graphics.drawRectangle(new Pen(Color.getDarkGray(), 1), rect);
// Guardar una copia de PSD con el modo de color cambiado a RBG
PsdOptions psdOptions = new PsdOptions();
psdOptions.setColorMode(ColorModes.Rgb);
psdOptions.setChannelBitsCount((short)16);
psdOptions.setChannelsCount((short)4);
image.save(exportFilePath, psdOptions);
}
finally
{
image.dispose();
}
// Cargar el PSD guardado
PsdImage image1 = (PsdImage)Image.load(exportFilePath);
try
{
PngOptions pngOptions = new PngOptions();
pngOptions.setColorType(PngColorType.GrayscaleWithAlpha);
// Convertir el PSD guardado en una imagen PNG en escala de grises
image1.save(pngExportPath, pngOptions); // aquí no debería haber excepción
}
finally
{
image1.dispose();
}
PSDJAVA-196. Corregir el guardado de imagen PSD con modo de color en escala de grises de 16 bits por canal al formato PSD de escala de grises de 8 bits por canal
// Un ejemplo de convertir un PSD en escala de grises de 16 bits en uno de escala de grises de 8 bits y luego a
// una imagen de ráster de escala de grises de 8 bits.
String sourceFilePath = "escalaDeGrises16bit.psd";
String exportFilePath = "salida_escalaDeGrises16bit.psd";
String pngExportPath = "salida_escalaDeGrises16bit.png";
// Cargar un PSD en escala de grises de 16 bits predefinido
PsdImage image = (PsdImage)Image.load(sourceFilePath);
try
{
RasterCachedImage raster = image.getLayers()[0];
// Dibujar un borde interior gris alrededor del perímetro de la capa
Graphics graphics = new Graphics(raster);
int width = raster.getWidth();
int height = raster.getHeight();
Rectangle rect = new Rectangle(width / 3, height / 3, width - (2 * (width / 3)) - 1, height - (2 * (height / 3)) - 1);
graphics.drawRectangle(new Pen(Color.getDarkGray(), 1), rect);
// Guardar una copia de PSD con el recuento de canales cambiado a 8 bits
PsdOptions psdOptions = new PsdOptions();
psdOptions.setColorMode(ColorModes.Grayscale);
psdOptions.setChannelBitsCount((short)8);
psdOptions.setChannelsCount((short)2);
image.save(exportFilePath, psdOptions);
}
finally
{
image.dispose();
}
// Cargar el PSD guardado
PsdImage image1 = (PsdImage)Image.load(exportFilePath);
try
{
PngOptions pngOptions = new PngOptions();
pngOptions.setColorType(PngColorType.GrayscaleWithAlpha);
// Convertir el PSD guardado en una imagen PNG en escala de grises
image1.save(pngExportPath, pngOptions); // aquí no debería haber excepción
}
finally
{
image1.dispose();
}
PSDJAVA-199. El alineamiento de texto a través de ITextPortion no funciona para idiomas de derecha a izquierda. El archivo de salida está dañado.
// Un ejemplo de alinear una capa de texto RTL a través de ITextPortion. El programa modifica
// una capa de texto RTL existente en un PSD cargado y guarda una copia del documento modificado.
String sourceFileName = "bidi.psd";
String outputFileName = "bidiSalida.psd";
// Cargar un PSD predefinido que contiene una capa de texto RTL
PsdImage image = (PsdImage)Image.load(sourceFileName);
try
{
// Obtener porciones de texto de la capa
TextLayer layer = (TextLayer)image.getLayers()[2];
ITextPortion[] portions = layer.getTextData().getItems();
// Cambiar el alineamiento del texto
portions[0].getParagraph().setJustification(2);
// Aplicar cambios a la capa
layer.getTextData().updateLayerData();
// Guardar una copia modificada del PSD
image.save(outputFileName);
}
finally
{
image.dispose();
}
PSDJAVA-201. Excepción al intentar abrir un archivo Psd en particular con Color Lab y 8 bit/canal
// Un ejemplo de soporte de un documento de Photoshop de 8 bits en el modo de color LAB.
String srcFile = "SinTítulo-1.psd";
String outputFilePsd = "salida.psd";
// Cargar un PSD de 8 bits predefinido en el modo de color LAB
PsdImage psdImage = (PsdImage)Image.load(srcFile);
try
{
// Guardar una copia del PSD cargado
psdImage.save(outputFilePsd);
}
finally
{
psdImage.dispose();
}