کلید خلاصه رده
PSDJAVA-264 پشتیبانی از SoLdResource (منبع داده لایه شیء هوشمند) ویژگی
PSDJAVA-263 پشتیبانی از PlLdResource (منبع لایه قرار داده شده برای لایه شیء هوشمند) ویژگی
PSDJAVA-262 افزودن پشتیبانی از ساختارهای آرایه شیء و آرایه واحد: امضاهای ObAr / UnFl ویژگی
PSDJAVA-265 خط خورده و خط خورده از بین می‌روند پس از تمرکز روی متن در فایل ذخیره شده با Aspose. اشکال
PSDJAVA-257 اصلاح ذخیره کردن تصویر PSD تغییر یافته با CMYK حالت رنگ 16 بیت بر کانال اشکال
PSDJAVA-268 رگرسیون: Aspose.PSD 20.7.0 اندازه‌های قلم را برای فایل‌های قدیمی شکسته می‌کند اشکال

تغییرات عمومی API

API های اضافه شده:

مثال‌های استفاده:

PSDJAVA-264. پشتیبانی از SoLdResource (منبع داده لایه شیء هوشمند)

// در این مثال نشان‌داده شده است که چگونه از خصوصیات داده لایه شیء هوشمند در فایل PSD، داده گرفته یا تنظیم شود.

// تعریف یک کلاس محلی برای نگهداری کد‌های قابل استفاده (متد‌ها)
class LocalScopeExtension
{
    boolean equals(Object a, Object b)
    {
        return (a == b) || (a != null && a.equals(b));
    }

    void assertAreEqual(Object actual, Object expected)
    {
        boolean areEqual = equals(actual, expected);
        // مقایسه آرایه‌ها در صورت وجود
        // کاربرد دارد
        if (!areEqual &&
                (actual != null && actual.getClass().isArray()) &&
                (expected != null && expected.getClass().isArray()))
        {
            int length;
            // استفاده از Reflection برای دستیابی به آرایه‌ها جهت پشتیبانی از آرایه‌های پایه
            if ((length = Array.getLength(actual)) == Array.getLength(expected))
            {
                for (int i = 0; i < length; i++)
                {
                    if (!equals(Array.get(actual, i), Array.get(expected, i)))
                    {
                        break;
                    }
                }

                areEqual = true;
            }
        }

        if (!areEqual)
        {
            throw new FormatException(
                    String.format("مقدار واقعی %s با مورد انتظار %s برابر نیست.", actual, expected));
        }
    }
}
LocalScopeExtension $ = new LocalScopeExtension();

String srcPsdPath = "LayeredSmartObjects8bit2.psd";
String dstPsdPath = "LayeredSmartObjects8bit2_output.psd";

Object[][] expectedValues = new Object[][]
        {
                // و غیره.
        };

// بارگیری یک فایل از پیش تعیین شده PSD حاوی SoLdResource
PsdImage image = (PsdImage)Image.load(srcPsdPath);
try
{
    SoLdResource resource = null;
    int index = 0;
    for (Layer imageLayer : image.getLayers())
    {
        for (LayerResource imageResource : imageLayer.getResources())
        {
            if (imageResource instanceof SoLdResource)
            {
                // اطمینان حاصل شود که منبع بارگیری شده همان چیزی است که ما انتظار داریم
                // در عین حال استفاده از API SoLdResource را نشان می‌دهد
                resource = (SoLdResource)imageResource;
                Object[] expectedValue = expectedValues[index++];
                $.assertAreEqual(expectedValue[0], resource.isCustom());
                $.assertAreEqual(expectedValue[1], resource.getUniqueId().toString());
                $.assertAreEqual(expectedValue[2], resource.getPageNumber());
                $.assertAreEqual(expectedValue[3], resource.getTotalPages());
                $.assertAreEqual(expectedValue[4], resource.getAntiAliasPolicy());
                $.assertAreEqual(expectedValue[5], resource.getPlacedLayerType());
                $.assertAreEqual(8, resource.getTransformMatrix().length);
                $.assertAreEqual(expectedValue[6], resource.getTransformMatrix());
                $.assertAreEqual(expectedValue[7], resource.getValue());
                $.assertAreEqual(expectedValue[8], resource.getPerspective());
                // و غیره.

                break;
            }
        }
    }

    $.assertAreEqual(true, resource != null);
    image.save(dstPsdPath, new PsdOptions(image));
}
finally
{
    image.dispose();
}

و غیره.

PSDJAVA-265. خط خورده و خط خورده از بین می‌روند پس از تمرکز روی متن در فایل ذخیره شده با Aspose.PSD

// در این مثال نشان داده شده است که فرمت خط خورده و خط‌خورده بر روی متن از بین نمی‌رود
// هنگام انتخاب متن با ابزار نوع افقی در فتوشاپ پس از ذخیره فایل PSD توسط کتابخانه.

String srcPsdPath = "source.psd";
String dstPsdPath = "output.psd";

// بارگیری یک فایل PSD حاوی لایه متنی
PsdImage image = (PsdImage)Image.load(srcPsdPath);
try
{
    Layer[] layers = image.getLayers();
    TextLayer textLayer = (TextLayer)layers[1];

    // سبک فرمت متن را تغییر دهید
    textLayer.getTextData().getItems()[0].getStyle().setUnderline(true);
    textLayer.getTextData().getItems()[1].getStyle().setStrikethrough(true);

    // تغییرات را در لایه متن اعمال کنید
    textLayer.getTextData().updateLayerData();

    image.save(dstPsdPath, new PsdOptions(image));
}
finally
{
    image.dispose();
}
PSDJAVA-257. اصلاح ذخیره کردن تصویر PSD تغییر یافته با CMYK حالت رنگ 16 بیت بر کانال
// در این مثال نشان داده شده است که خطا در ذخیره سازی تصویر 16 بیتی PSD در حالت رنگ CMYK وجود ندارد.
// برنامه یک تصویر 16 بیتی در حالت CMYK بارگیری می‌کند، سپس آن را کمی تغییر داده و بعنوان یک سند فتوشاپ دیگر ذخیره می‌کند.

String srcPsdPath = "cub16bit_cmyk.psd";
String dstPngPath = "output.png";

// بارگیری یک تصویر 16 بیتی در حالت CMYK
PsdImage image = (PsdImage)Image.load(srcPsdPath);
try
{
    RasterCachedImage raster = image.getLayers()[0];

    // تغییر تصویر با اضافه کردن حاشیه داخلی
    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);

    // خط زیر باید بدون هیچ خطا اجرا شود
    image.save(dstPngPath, new PngOptions());
}
finally
{
    image.dispose();
}

PSDJAVA-268. رگرسیون: Aspose.PSD 20.7.0 اندازه‌های قلم را برای فایل‌های قدیمی شکسته می‌کند

// این مثال بازسازی خطا است که اندازه‌های قلم را برای فایل‌های PSD قدیمی شکسته می‌کند.

String srcPsdPath = "font_size_lost.psd";
String dstPngPath = "output.png";

PsdImage psdImage = (PsdImage)Image.load(srcPsdPath);
try
{
    TextLayer textLayer = (TextLayer)psdImage.getLayers()[0];
    // پردازش قدرتمند لایه متنی که تغییر نکرده است برای بازسازی خطا

    textLayer.getTextData().updateLayerData();

    psdImage.save(dstPngPath, new PngOptions());
}
finally
{
    psdImage.dispose();
}