Notes de publication Aspose.PSD pour Java 20.5
Clé | Résumé | Catégorie |
---|---|---|
PSDJAVA-188 | Prise en charge de la progression de conversion de document | Fonctionnalité |
PSDJAVA-197 | Prise en charge de l’enregistrement de l’image PSD en mode de couleur niveaux de gris avec 16 bits par canal | Fonctionnalité |
PSDJAVA-198 | Prise en charge des ressources Nvrt (Calque d’ajustement d’inversion) | Fonctionnalité |
PSDJAVA-200 | Support des masques de calque pour les groupes de calques | Fonctionnalité |
PSDJAVA-195 | Correction de l’enregistrement de l’image PSD en mode de couleur niveaux de gris 16 bits par canal au format PSD RVB 16 bits par canal | Bogue |
PSDJAVA-196 | Correction de l’enregistrement de l’image PSD en mode de couleur niveaux de gris 16 bits par canal au format PSD niveaux de gris 8 bits par canal | Bogue |
PSDJAVA-199 | L’alignement du texte via ITextPortion ne fonctionne pas pour les langues de droite à gauche. Le fichier de sortie est endommagé. | Bogue |
PSDJAVA-201 | Exception lors de la tentative d’ouverture d’un fichier Psd particulier avec couleur Lab et 8 bits/canal | Bogue |
Modifications de l’API publique
APIs ajoutées :
- Aucune
APIs supprimées :
- Aucune
Exemples d’utilisation:
PSDJAVA-188. Prise en charge de la progression de conversion de document
// Un exemple d'utilisation du gestionnaire de progression pour les opérations de chargement et d'enregistrement.
// Le programme utilise différentes options d'enregistrement pour déclencher des événements de progression.
String sourceFilePath = "Apple.psd";
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
// Crée un gestionnaire de progression qui écrit des informations de progression dans la console
ProgressEventHandler localProgressEventHandler = new ProgressEventHandler()
{
@Override
public void invoke(ProgressEventHandlerInfo progressInfo)
{
String message = String.format(
"%s %s : %s sur %s",
progressInfo.getDescription(),
Enum.getName(EventType.class, progressInfo.getEventType()),
progressInfo.getValue(),
progressInfo.getMaxValue());
System.out.println(message);
}
};
System.out.println("---------- Chargement d'Apple.psd ----------");
PsdLoadOptions loadOptions = new PsdLoadOptions();
// Associe le gestionnaire de progression pour afficher la progression du chargement
loadOptions.setProgressEventHandler(localProgressEventHandler);
// Charge le PSD en utilisant des options de chargement spécifiques
PsdImage image = (PsdImage)Image.load(sourceFilePath, loadOptions);
try
{
System.out.println("---------- Enregistrement d'Apple.psd au format PNG ----------");
PngOptions pngOptions = new PngOptions();
// Rendre l'image de sortie en couleur et non transparente
pngOptions.setColorType(PngColorType.Truecolor);
// Associe le gestionnaire de progression pour afficher la progression de l'enregistrement
pngOptions.setProgressEventHandler(localProgressEventHandler);
// Convertit le PSD en PNG avec des caractéristiques spécifiques
image.save(outputStream, pngOptions);
System.out.println("---------- Enregistrement d'Apple.psd au format PSD ----------");
PsdOptions psdOptions = new PsdOptions();
// Rendre le PSD de sortie en couleur
psdOptions.setColorMode(ColorModes.Rgb);
// Définir un canal pour chaque couleur (rouge, vert et bleu) plus un canal composite
psdOptions.setChannelsCount((short)4);
// Associe le gestionnaire de progression pour afficher la progression de l'enregistrement
psdOptions.setProgressEventHandler(localProgressEventHandler);
// Enregistrer une copie du PSD avec des caractéristiques spécifiques
image.save(outputStream, psdOptions);
}
finally
{
image.dispose();
}
PSDJAVA-197. Prise en charge de l’enregistrement de l’image PSD en mode de couleur niveaux de gris avec 16 bits par canal
// Un exemple d'application de différentes combinaisons de modes de couleur, de bits par canal, de comptes de canaux et de compressions pour des calques spécifiques.
// Permet à une méthode d'être accessible à partir de la portée locale
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";
// Charge un PSD en niveaux de gris prédéfini sur 16 bits
PsdImage image = (PsdImage)Image.load(filePath);
try
{
RasterCachedImage raster = layerNumber >= 0 ? image.getLayers()[layerNumber] : image;
// Dessine une bordure interne grise autour du périmètre du calque
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);
// Enregistre une copie du PSD avec des caractéristiques spécifiques
PsdOptions psdOptions = new PsdOptions();
psdOptions.setColorMode(colorMode);
psdOptions.setChannelBitsCount(channelBitsCount);
psdOptions.setChannelsCount(channelsCount);
psdOptions.setCompressionMethod(compression);
image.save(exportPath, psdOptions);
}
finally
{
image.dispose();
}
// Charge le PSD enregistré
PsdImage image1 = (PsdImage)Image.load(exportPath);
try
{
// Convertit le PSD enregistré en une image PNG en niveaux de gris
PngOptions pngOptions = new PngOptions();
pngOptions.setColorType(PngColorType.GrayscaleWithAlpha);
image1.save(pngExportPath, pngOptions); // il ne devrait y avoir aucune exception ici
}
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_no_layers", ColorModes.Grayscale, (short)16, (short)2, CompressionMethod.RLE, -1);
$.saveToPsdThenLoadAndSaveToPng("argb8bit_5x5", ColorModes.Grayscale, (short)16, (short)2, CompressionMethod.RLE, 0);
$.saveToPsdThenLoadAndSaveToPng("argb8bit_5x5_no_layers", ColorModes.Grayscale, (short)16, (short)2, CompressionMethod.RLE, -1);
$.saveToPsdThenLoadAndSaveToPng("cmyk16bit_5x5_no_layers", ColorModes.Grayscale, (short)16, (short)2, CompressionMethod.RLE, -1);
$.saveToPsdThenLoadAndSaveToPng("index8bit_5x5", ColorModes.Grayscale, (short)16, (short)2, CompressionMethod.RLE, -1);
PSDJAVA-198. Prise en charge des ressources Nvrt (Calque d’ajustement d’inversion)
// Un exemple de recherche de la ressource Nvrt d'un calque d'ajustement d'inversion.
String inPsdFilePath = "CalqueAjustementInversion.psd";
NvrtResource nvrtResource = null;
// Charge un PSD prédéfini contenant un calque d'ajustement d'inversion
PsdImage psdImage = (PsdImage)Image.load(inPsdFilePath);
try
{
// Tente de trouver une ressource du calque d'ajustement d'inversion
for (Layer layer : psdImage.getLayers())
{
if (layer instanceof InvertAdjustmentLayer)
{
for (LayerResource layerResource : layer.getResources())
{
if (layerResource instanceof NvrtResource)
{
// La ressource Nvrt est trouvée
nvrtResource = (NvrtResource)layerResource;
break;
}
}
}
}
}
finally
{
psdImage.dispose();
}
PSDJAVA-200. Prise en charge des masques de calque pour les groupes de calques
// Un exemple de prise en charge des masques de calque pour les groupes de calques. Le programme charge et enregistre dans des formats de sortie différents sans générer d'exceptions.
String srcFile = "psdnet595.psd";
String outputPng = "sortie.png";
String outputPsd = "sortie.psd";
// Charge un PSD prédéfini contenant des masques de calque pour les groupes de calques
PsdImage input = (PsdImage)Image.load(srcFile);
try
{
// Convertit le PSD chargé en PNG
input.save(outputPng, new PngOptions());
// Enregistre une copie du PSD
input.save(outputPsd);
}
finally
{
input.dispose();
}
PSDJAVA-195. Correction de l’enregistrement de l’image PSD en mode de couleur niveaux de gris 16 bits par canal au format PSD RVB 16 bits par canal
// Un exemple de conversion d'un PSD en niveaux de gris 16 bits en un PSD RVB 16 bits, puis à nouveau en
// une image raster en niveaux de gris 16 bits.
String sourceFilePath = "grayscale5x5.psd";
String exportFilePath = "sortie_rgb16bit5x5.psd";
String pngExportPath = "sortie_rgb16bit5x5.png";
// Charge un PSD prédéfini en niveaux de gris 16 bits
PsdImage image = (PsdImage)Image.load(sourceFilePath);
try
{
RasterCachedImage raster = image.getLayers()[0];
// Dessine une bordure interne grise autour du périmètre du calque
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);
// Enregistre une copie du PSD avec le mode de couleur modifié en RVB
PsdOptions psdOptions = new PsdOptions();
psdOptions.setColorMode(ColorModes.Rgb);
psdOptions.setChannelBitsCount((short)16);
psdOptions.setChannelsCount((short)4);
image.save(exportFilePath, psdOptions);
}
finally
{
image.dispose();
}
// Charge le PSD enregistré
PsdImage image1 = (PsdImage)Image.load(exportFilePath);
try
{
PngOptions pngOptions = new PngOptions();
pngOptions.setColorType(PngColorType.GrayscaleWithAlpha);
// Convertit le PSD enregistré en une image PNG en niveaux de gris
image1.save(pngExportPath, pngOptions); // il ne devrait y avoir aucune exception ici
}
finally
{
image1.dispose();
}
PSDJAVA-196. Correction de l’enregistrement de l’image PSD en mode de couleur niveaux de gris 16 bits par canal au format PSD niveaux de gris 8 bits par canal
// Un exemple de conversion d'un PSD en niveaux de gris 16 bits en un PSD en niveaux de gris 8 bits, puis en
// une image raster en niveaux de gris 8 bits.
String sourceFilePath = "niveauxdegris16bit.psd";
String exportFilePath = "sortie_niveauxdegris16bit.psd";
String pngExportPath = "sortie_niveauxdegris16bit.png";
// Charge un PSD prédéfini en niveaux de gris 16 bits
PsdImage image = (PsdImage)Image.load(sourceFilePath);
try
{
RasterCachedImage raster = image.getLayers()[0];
// Dessine une bordure interne grise autour du périmètre du calque
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);
// Enregistre une copie du PSD avec le nombre de canaux changé en 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();
}
// Charge le PSD enregistré
PsdImage image1 = (PsdImage)Image.load(exportFilePath);
try
{
PngOptions pngOptions = new PngOptions();
pngOptions.setColorType(PngColorType.GrayscaleWithAlpha);
// Convertit le PSD enregistré en une image PNG en niveaux de gris
image1.save(pngExportPath, pngOptions); // il ne devrait y avoir aucune exception ici
}
finally
{
image1.dispose();
}
PSDJAVA-199. L’alignement du texte via ITextPortion ne fonctionne pas pour les langues de droite à gauche. Le fichier de sortie est endommagé.
// Un exemple d'alignement d'un calque de texte de droite à gauche via ITextPortion. Le programme modifie
// un calque de texte RTL existant dans le PSD chargé et enregistre une copie du document modifié.
String sourceFileName = "bidi.psd";
String outputFileName = "bidiSortie.psd";
// Charge un PSD prédéfini contenant un calque de texte RTL
PsdImage image = (PsdImage)Image.load(sourceFileName);
try
{
// Obtient les portions de texte du calque
TextLayer layer = (TextLayer)image.getLayers()[2];
ITextPortion[] portions = layer.getTextData().getItems();
// Change l'alignement du texte
portions[0].getParagraph().setJustification(2);
// Applique les changements au calque
layer.getTextData().updateLayerData();
// Enregistre une copie modifiée du PSD
image.save(outputFileName);
}
finally
{
image.dispose();
}
PSDJAVA-201. Exception lors de la tentative d’ouverture d’un fichier PSD particulier avec couleur Lab et 8 bits/canal
// Un exemple de prise en charge d'un document Photoshop 8 bits en mode de couleur LAB.
String srcFile = "SansTitre-1.psd";
String outputFilePsd = "sortie.psd";
// Charge un PSD 8 bits prédéfini en mode de couleur LAB
PsdImage psdImage = (PsdImage)Image.load(srcFile);
try
{
// Enregistre une copie du PSD chargé
psdImage.save(outputFilePsd);
}
finally
{
psdImage.dispose();
}