Notas de lanzamiento de Aspose.PSD para Java 23.9
Clave | Resumen | Categoría |
---|---|---|
PSDJAVA-527 | Implementar la creación de máscara para nuevas capas de ajuste | Característica |
PSDJAVA-528 | Agregar soporte para la Opción de mezcla de capas recortadas como opción de mezcla de grupo | Característica |
PSDJAVA-529 | El archivo PSD con modo de color de 16 bits no aplica la máscara para capas de ajuste | Error |
PSDJAVA-530 | Representación incorrecta de corchetes en la capa de texto | Error |
PSDJAVA-531 | No se pueden actualizar los estilos en las capas de texto | Error |
PSDJAVA-532 | Después de exportar el archivo PSD con CMYK se rompen los colores en el PSD exportado | Error |
PSDJAVA-533 | El archivo PSB específico arroja la excepción “El rectángulo no tiene un área de procesamiento común” | Error |
PSDJAVA-534 | Fallo al cargar la imagen. OverflowException: La operación aritmética resultó en un desbordamiento. | Error |
Cambios en la API pública
APIs agregadas:
- M:com.aspose.psd.PixelDataFormat.getMisCmyk16
- M:com.aspose.psd.PixelDataFormat.getMisCmyka16
- M:com.aspose.psd.fileformats.psd.layers.Layer.getMisElementosRecortadosMezclados
- M:com.aspose.psd.fileformats.psd.layers.Layer.setMisElementosRecortadosMezclados(boolean)
APIs eliminadas:
- Ninguna
Ejemplos de uso:
** PSDJAVA-527. Implementar la creación de máscara para nuevas capas de ajuste**
public static void main(String[] args) {
String archivoFuente = "src/main/resources/zendeya_BW.psd";
String archivoDestino = "src/main/resources/zendeya_BW_salida.psd";
try (PsdImage im = (PsdImage) Image.load(archivoFuente)) {
im.addBlackWhiteAdjustmentLayer();
im.save(archivoDestino);
}
try (PsdImage im = (PsdImage) Image.load(archivoDestino)) {
Layer capa = im.getLayers()[1];
assertAreEqual(5, capa.getChannelsCount());
assertAreEqual((short) -2, capa.getChannelInformation()[4].getChannelID());
}
}
static void assertAreEqual(Object esperado, Object real) {
assertAreEqual(esperado, real, "Los objetos no son iguales.");
}
static void assertAreEqual(Object esperado, Object real, String mensaje) {
if (!esperado.equals(real)) {
throw new IllegalArgumentException(mensaje);
}
}
** PSDJAVA-528. Agregar soporte para la Opción de mezcla de capas recortadas como opción de mezcla de grupo**
String archivoFuente = "src/main/resources/ejemplo_fuente.psd";
String psdSalida = "src/main/resources/ejemplo_salida.psd";
String pngSalida = "src/main/resources/ejemplo_salida.png";
try (PsdImage imagen = (PsdImage)Image.load(archivoFuente)) {
imagen.getLayers()[1].setBlendClippedElements(false);
imagen.save(psdSalida);
imagen.save(pngSalida, new PngOptions());
}
** PSDJAVA-529. El archivo PSD con modo de color de 16 bits no aplica la máscara para capas de ajuste**
String archivoFuente = "src/main/resources/fuente.psd";
String pngSalida = "src/main/resources/actual.png";
try (PsdImage imagen = (PsdImage) Image.load(archivoFuente)) {
imagen.save(pngSalida, new PngOptions());
}
** PSDJAVA-530. Representación incorrecta de corchetes en la capa de texto**
String archivo = "src/main/resources/archivo1.psd";
String salida = "src/main/resources/salida_1235.png";
try (PsdImage psdImagen = (PsdImage) Image.load(archivo)) {
for (Layer capa : psdImagen.getLayers()) {
if (capa instanceof TextLayer) {
TextLayer capaTexto = (TextLayer) capa;
capaTexto.getTextData().updateLayerData();
PsdOptions opcionesImagen = new PsdOptions(psdImagen);
psdImagen.save(salida, opcionesImagen);
}
}
}
** PSDJAVA-531. No se pueden actualizar los estilos en las capas de texto**
String archivoFuente = "src/main/resources/Ejemplo_TamañoFuente.psd";
String archivoSalida = "src/main/resources/salida_Ejemplo_TamañoFuente.psd";
PsdLoadOptions opcionesCargaPsd = new PsdLoadOptions();
opcionesCargaPsd.setLoadEffectsResource(true);
try (PsdImage imagenPsd = (PsdImage) Image.load(archivoFuente, opcionesCargaPsd)) {
TextLayer l1 = (TextLayer) imagenPsd.getLayers()[4];
TextLayer l2 = (TextLayer) imagenPsd.getLayers()[5];
ITextPortion[] elementosTexto1 = l1.getTextData().producePortions(new String[]{"texto1", "texto2"},
l1.getTextData().getItems()[0].getStyle(), l1.getTextData().getItems()[0].getParagraph());
l1.getTextData().removePortion(0);
for (ITextPortion elemento : elementosTexto1) {
l1.getTextData().addPortion(elemento);
}
ITextPortion[] elementosTexto2 = l2.getTextData().producePortions(new String[]{"capa de texto 1", "capa de texto 22"},
l2.getTextData().getItems()[0].getStyle(), l2.getTextData().getItems()[0].getParagraph());
for (ITextPortion elemento : elementosTexto2) {
l2.getTextData().addPortion(elemento);
}
l1.getTextData().updateLayerData();
l2.getTextData().updateLayerData();
imagenPsd.save(archivoSalida);
}
** PSDJAVA-532. Después de exportar el archivo PSD con CMYK se rompen los colores en el PSD exportado**
String archivoFuente = "src/main/resources/cañón.psd";
String archivoSalidaPng = "src/main/resources/salida_cañón.png";
MemoryStream flujoSalida = new MemoryStream();
try (PsdImage imagenPsd = (PsdImage) Image.load(archivoFuente)) {
imagenPsd.save(flujoSalida.toOutputStream());
}
flujoSalida.setPosition(0);
try (PsdImage imagenPsd = (PsdImage) Image.load(flujoSalida.toInputStream())) {
imagenPsd.save(archivoSalidaPng, new PngOptions());
}
flujoSalida.close();
** PSDJAVA-533. El archivo PSB específico arroja la excepción “El rectángulo no tiene un área de procesamiento común”**
String archivoEntrada = "src/main/resources/1619_fuente.psb";
String archivoSalida = "src/main/resources/1619_salida.png";
PsdLoadOptions opcionesCargaPsd = new PsdLoadOptions();
opcionesCargaPsd.setLoadEffectsResource(true);
try (PsdImage img = (PsdImage) Image.load(archivoEntrada, opcionesCargaPsd)) {
PngOptions opcionesPng = new PngOptions();
opcionesPng.setCompressionLevel(9);
opcionesPng.setColorType(PngColorType.TruecolorWithAlpha);
img.save(archivoSalida, opcionesPng);
}
** PSDJAVA-534. Fallo al cargar la imagen. OverflowException: La operación aritmética resultó en un desbordamiento.**
public static void main(String[] args) {
String archivoFuente = "src/main/resources/9baa6962-f409-41ee-88da-418ea87bb56f_test_2.psd";
try (PsdImage im = (PsdImage)PsdImage.load(archivoFuente))
{
Layer capa = im.getLayers()[28];
GrdmResource recursoGrdm = (GrdmResource)capa.getResources()[0];
assertAreEqual("自定", recursoGrdm.getGradientName());
}
}
static void assertAreEqual(Object esperado, Object real) {
assertAreEqual(esperado, real, "Los objetos no son iguales.");
}
static void assertAreEqual(Object esperado, Object real, String mensaje) {
if (!esperado.equals(real)) {
throw new IllegalArgumentException(mensaje);
}
}