| **Ключ** | **Сводка** | **Категория** |
|:------------|:-------------------------------------------------------------------------------------------------------------------------------------------------|:-------------|
| PSDJAVA-502 | Добавить возможность экспортировать каждый слой файла PSD в файл Animated Gif | Функция |
| PSDJAVA-503 | Назначить свойство заполнения слоя формы из ресурса vscg | Функция |
| PSDJAVA-504 | Добавить новые типы искажения (дугу и арку) | Функция |
| PSDJAVA-505 | Изменить приложение, которое сохраняет файл PSD в Aspose.PSD, если свойство UpdateMetadata установлено в true | Функция |
| PSDJAVA-510 | Увеличить область расчета изображения искажения | Функция |
| PSDJAVA-511 | Черно-белая коррекция слоя на полупрозрачность обрабатывается неправильно | Ошибка |
| PSDJAVA-512 | Замена содержимого SmartObject (когда активна опция AllowWarpRepaint) падает после 2 минут вычислений | Ошибка |
| PSDJAVA-513 | Добавить возможность получить реальное положение слева и сверху группы слоев | Ошибка |
| PSDJAVA-514 | Изменение размера слоя работает неправильно, когда файл PSD содержит VogkResource со структурами в точках | Ошибка |
| PSDJAVA-515 | Текстовая область не работает как ожидалось | Ошибка |
| PSDJAVA-516 | Добавление слоя, созданного конструктором по умолчанию, к изображению PSD не добавляет к нему стандартные ресурсы | Ошибка |
| PSDJAVA-517 | Количество петель Timeline.LoopesCount игнорируется при экспорте в анимированный GIF | Ошибка |
## **Изменения в общедоступном API**# **Добавленные API:**- F:com.aspose.psd.fileformats.ai.AiFormatVersion.Pdf17
- F:com.aspose.psd.fileformats.ai.AiFormatVersion.Pdf16
- M:com.aspose.psd.imageoptions.PsdOptions.getUpdateMetadata
- M:com.aspose.psd.imageoptions.PsdOptions.setUpdateMetadata(boolean)
- M:com.aspose.psd.xmp.schemas.xmpbaseschema.XmpBasicPackage.containsKey(java.lang.String)
- M:com.aspose.psd.xmp.schemas.xmpbaseschema.XmpBasicPackage.get_Item(java.lang.String)
- M:com.aspose.psd.xmp.schemas.xmpbaseschema.XmpBasicPackage.set_Item(java.lang.String,java.lang.Object)
- M:com.aspose.psd.xmp.schemas.xmpbaseschema.XmpBasicPackage.setValue(java.lang.String,com.aspose.psd.xmp.IXmlValue)
# **Удаленные API:**- M:com.aspose.psd.xmp.schemas.xmpbaseschema.XmpBasicPackage.setCreatedDate(java.util.Date)
- M:com.aspose.psd.xmp.schemas.xmpbaseschema.XmpBasicPackage.setMetadataDate(java.util.Date)
- M:com.aspose.psd.xmp.schemas.xmpbaseschema.XmpBasicPackage.setModifyDate(java.util.Date)
- M:com.aspose.psd.fileformats.psd.layers.layerresources.vectorpaths.VectorPath.getFillColor
- M:com.aspose.psd.fileformats.psd.layers.layerresources.vectorpaths.VectorPath.setFillColor(com.aspose.psd.Color)
## **Примеры использования:****PSDJAVA-502. Добавить возможность экспортировать каждый слой файла PSD в файл Animated Gif**
Stringsrc="src/main/resources/EachLayerIsFrame.psd";StringoutputGif="src/main/resources/out_EachLayerIsFrame.gif";StringoutputPsd="src/main/resources/out_EachLayerIsFrame.psd";try(PsdImagepsdImage=(PsdImage)Image.load(src)){// Создание кадров для каждого слоя.
intframesCount=psdImage.getLayers().length;Timelinetimeline=psdImage.getTimeline();Frame[]frames=newFrame[framesCount];for(inti=0;i<framesCount;i++){frames[i]=newFrame();LayerState[]layerStates=newLayerState[framesCount];for(intj=0;j<framesCount;j++){layerStates[j]=newLayerState();layerStates[j].setEnabled(i==j);}frames[i].setLayerStates(layerStates);}timeline.setFrames(frames);// Обновление текущих состояний
Layer[]layers=psdImage.getLayers();LayerState[]states=timeline.getFrames()[timeline.getActiveFrameIndex()].getLayerStates();for(inti=0;i<framesCount;i++){layers[i].setVisible(states[i].getEnabled());}timeline.save(outputGif,newGifOptions());psdImage.save(outputPsd);}
**PSDJAVA-503. Назначить свойство заполнения слоя формы из ресурса vscg**
// Пример заполнения сплошным цветом
publicstaticvoidmain(String[]args){StringsrcFile="src/main/resources/ShapeInternalSolid.psd";StringoutFile="src/main/resources/ShapeInternalSolid.psd.out.psd";PsdLoadOptionspsdLoadOptions=newPsdLoadOptions();psdLoadOptions.setLoadEffectsResource(true);try(PsdImageimage=(PsdImage)Image.load(srcFile,psdLoadOptions)){ShapeLayershapeLayer=(ShapeLayer)image.getLayers()[1];ColorFillSettingsfillSettings=(ColorFillSettings)shapeLayer.getFill();fillSettings.setColor(Color.getRed());shapeLayer.update();image.save(outFile);}// Проверка сохраненных изменений
try(PsdImageimage=(PsdImage)Image.load(outFile,psdLoadOptions)){ShapeLayershapeLayer=(ShapeLayer)image.getLayers()[1];ColorFillSettingsfillSettings=(ColorFillSettings)shapeLayer.getFill();assertAreEqual(Color.getRed(),fillSettings.getColor());image.save(outFile);}staticvoidassertAreEqual(Objectexpected,Objectactual,Stringmessage){if(!expected.equals(actual)){thrownewIllegalArgumentException(message);}}staticvoidassertAreEqual(Objectexpected,Objectactual){assertAreEqual(expected,actual,"Objects are not equal.");}// Пример градиентного заполнения:
publicstaticvoidmain(String[]args){StringsrcFile="src/main/resources/ShapeInternalGradient.psd";StringoutFile="src/main/resources/ShapeInternalGradient.psd.out.psd";PsdLoadOptionspsdLoadOptions=newPsdLoadOptions();psdLoadOptions.setLoadEffectsResource(true);try(PsdImageimage=(PsdImage)Image.load(srcFile,psdLoadOptions)){ShapeLayershapeLayer=(ShapeLayer)image.getLayers()[1];GradientFillSettingsfillSettings=(GradientFillSettings)shapeLayer.getFill();fillSettings.setDither(true);fillSettings.setReverse(true);fillSettings.setAlignWithLayer(false);fillSettings.setAngle(20);fillSettings.setScale(50);fillSettings.getColorPoints()[0].setLocation(100);fillSettings.getColorPoints()[1].setLocation(4000);fillSettings.getTransparencyPoints()[0].setLocation(200);fillSettings.getTransparencyPoints()[1].setLocation(3800);fillSettings.getTransparencyPoints()[0].setOpacity(90);fillSettings.getTransparencyPoints()[1].setOpacity(10);shapeLayer.update();image.save(outFile);}// Проверка сохраненных изменений
try(PsdImageimage=(PsdImage)Image.load(outFile,psdLoadOptions)){ShapeLayershapeLayer=(ShapeLayer)image.getLayers()[1];GradientFillSettingsfillSettings=(GradientFillSettings)shapeLayer.getFill();assertAreEqual(true,fillSettings.getDither());assertAreEqual(true,fillSettings.getReverse());assertAreEqual(false,fillSettings.getAlignWithLayer());assertAreEqual((double)20,fillSettings.getAngle());assertAreEqual(50,fillSettings.getScale());assertAreEqual(100,fillSettings.getColorPoints()[0].getLocation());assertAreEqual(4000,fillSettings.getColorPoints()[1].getLocation());assertAreEqual(200,fillSettings.getTransparencyPoints()[0].getLocation());assertAreEqual(3800,fillSettings.getTransparencyPoints()[1].getLocation());assertAreEqual((double)90,fillSettings.getTransparencyPoints()[0].getOpacity());assertAreEqual((double)10,fillSettings.getTransparencyPoints()[1].getOpacity());}}staticvoidassertAreEqual(Objectexpected,Objectactual){assertAreEqual(expected,actual,"Objects are not equal.");}
**PSDJAVA-504. Добавить новые типы искажения (дугу и арку)**