گزارش انتشار Aspose.PSD برای جاوا 24.4
Contents
[
Hide
]
این صفحه حاوی یادداشتهای انتشار برای Aspose.PSD برای جاوا 24.4 است.
کلید | خلاصه | دستهبندی |
---|---|---|
PSDJAVA-610 | تنظیم مجوز برای Aspose.PSD برای جاوا منجر به استثناء میشود اگر بیش از یک بار انجام شود | باگ |
PSDJAVA-611 | [فرمت AI] افزودن روند هندسی XObjectForm | ویژگی |
PSDJAVA-612 | افزودن سازنده برای ShapeLayer | ویژگی |
PSDJAVA-613 | رفع مشکل تبدیل پرونده Psd از رنگهای RGB به CMYK | باگ |
PSDJAVA-614 | امکان صادر کردن پرونده خاصی از طریق Aspose.PSD وجود ندارد | باگ |
تغییرات API عمومی
APIهای اضافه شده:
- M:com.aspose.psd.fileformats.psd.PsdImage.addShapeLayer
APIهای حذف شده:
- هیچکدام
مثالهای استفاده:
PSDJAVA-610. تنظیم مجوز برای Aspose.PSD برای جاوا منجر به استثناء میشود اگر بیش از یک بار انجام شود
License license = new License();
String liccorrectJava = "Aspose.PSD.Java.lic";
license.setLicense(liccorrectJava);
license.setLicense(liccorrectJava);
PSDJAVA-611. [فرمت AI] افزودن روند هندسی با منبع XObjectForm
String sourceFile = "src/main/resources/example.ai";
String outputFilePath = "src/main/resources/example.png";
try (AiImage image = (AiImage) Image.load(sourceFile)) {
image.save(outputFilePath, new PngOptions());
}
PSDJAVA-612. افزودن سازنده برای ShapeLayer
private static final int IMG_TO_PSD_RATIO = 256 * 65535;
public static void main(String[] args) {
String outputFile = "src/main/resources/AddShapeLayer_output.psd";
try (PsdImage newPsd = new PsdImage(600, 400)) {
ShapeLayer layer = newPsd.addShapeLayer();
PathShape newShape = generateNewShape(newPsd.getSize());
List<IPathShape> newShapes = new List<>();
newShapes.add(newShape);
layer.getPath().setItems(newShapes.toArray(new IPathShape[0]));
layer.update();
newPsd.save(outputFile);
}
try (PsdImage image = (PsdImage) Image.load(outputFile)) {
assertAreEqual(2, image.getLayers().length);
ShapeLayer shapeLayer = (ShapeLayer) image.getLayers()[1];
ColorFillSettings internalFill = (ColorFillSettings) shapeLayer.getFill();
IStrokeSettings strokeSettings = shapeLayer.getStroke();
ColorFillSettings strokeFill = (ColorFillSettings) strokeSettings.getFill();
assertAreEqual(1, shapeLayer.getPath().getItems().length); // 1 Shape
assertAreEqual(3, shapeLayer.getPath().getItems()[0].getItems().length); // 3 knots in a shape
assertAreEqual(-16127182, internalFill.getColor().toArgb()); // ff09eb32
assertAreEqual(7.41, strokeSettings.getSize());
assertAreEqual(false, strokeSettings.getEnabled());
assertAreEqual(StrokePosition.Center, strokeSettings.getLineAlignment());
assertAreEqual(LineCapType.ButtCap, strokeSettings.getLineCap());
assertAreEqual(LineJoinType.MiterJoin, strokeSettings.getLineJoin());
assertAreEqual(-16777216, strokeFill.getColor().toArgb()); // ff000000
}
}
static PathShape generateNewShape(Size imageSize) {
PathShape newShape = new PathShape();
PointF point1 = new PointF(20, 100);
PointF point2 = new PointF(200, 100);
PointF point3 = new PointF(300, 10);
BezierKnotRecord firstBezierKnotRecord = new BezierKnotRecord();
firstBezierKnotRecord.setLinked(true);
firstBezierKnotRecord.setPoints(new Point[]{
pointFToResourcePoint(point1, imageSize),
pointFToResourcePoint(point1, imageSize),
pointFToResourcePoint(point1, imageSize)
});
BezierKnotRecord secondBezierKnotRecord = new BezierKnotRecord();
secondBezierKnotRecord.setLinked(true);
secondBezierKnotRecord.setPoints(new Point[]{
pointFToResourcePoint(point2, imageSize),
pointFToResourcePoint(point2, imageSize),
pointFToResourcePoint(point2, imageSize)
});
BezierKnotRecord thirdBezierKnotRecord = new BezierKnotRecord();
thirdBezierKnotRecord.setLinked(true);
thirdBezierKnotRecord.setPoints(new Point[]{
pointFToResourcePoint(point3, imageSize),
pointFToResourcePoint(point3, imageSize),
pointFToResourcePoint(point3, imageSize)
});
BezierKnotRecord[] bezierKnots = new BezierKnotRecord[]{
firstBezierKnotRecord,
secondBezierKnotRecord,
thirdBezierKnotRecord
};
newShape.setItems(bezierKnots);
return newShape;
}
static Point pointFToResourcePoint(PointF point, Size imageSize) {
return new Point(
Math.round(point.getY() * (IMG_TO_PSD_RATIO / imageSize.getHeight())),
Math.round(point.getX() * (IMG_TO_PSD_RATIO / imageSize.getWidth())));
}
static void assertAreEqual(Object expected, Object actual) {
assertAreEqual(expected, actual, "اشتباه: اشیاء برابر نیستند.");
}
static void assertAreEqual(Object expected, Object actual, String message) {
if (!expected.equals(actual)) {
throw new IllegalArgumentException(message);
}
}
PSDJAVA-613. رفع مشکل تبدیل پرونده Psd از رنگهای RGB به CMYK
public static void main(String[] args) {
// اطمینان حاصل شود که پرونده psd تبدیل شده به CMYK + RLE 4 کانال از پرونده psd در RGB + RLE 4 کانال، واقعاً 4 کانال را دارد و HasTransparencyData == false.
String sourceFile = "src/main/resources/frog_nosymb.psd";
String outputFile = "src/main/resources/frog_nosymb_output.psd";
try (PsdImage psdImage = (PsdImage) Image.load(sourceFile)) {
psdImage.setTransparencyData(false);
PsdOptions psdOptions = new PsdOptions(psdImage);
psdOptions.setColorMode(ColorModes.Cmyk);
psdOptions.setCompressionMethod(CompressionMethod.RLE);
psdOptions.setChannelsCount((short) 4);
psdImage.save(outputFile, psdOptions);
}
try (PsdImage psdImage = (PsdImage) Image.load(outputFile)) {
assertAreEqual(false, psdImage.hasTransparencyData());
assertAreEqual(4, psdImage.getLayers()[0].getChannelsCount());
}
}
static void assertAreEqual(Object expected, Object actual) {
assertAreEqual(expected, actual, "اشتباه: اشیاء برابر نیستند.");
}
static void assertAreEqual(Object expected, Object actual, String message) {
if (!expected.equals(actual)) {
throw new IllegalArgumentException(message);
}
}
PSDJAVA-614. پرونده خاص Psd نمیتواند با استفاده از Aspose.PSD صادر شود
String sourceFile = "src/main/resources/1966source.psd";
String outputPng = "src/main/resources/output.png";
PsdLoadOptions psdLoadOptions = new PsdLoadOptions();
psdLoadOptions.setLoadEffectsResource(true);
try (PsdImage psdImage = (PsdImage) Image.load(sourceFile, psdLoadOptions)) {
psdImage.save(outputPng, new PngOptions());
}