The layer is converted to a smart object layer is replaced

图层转换为智能对象图层 再替换智能对象图层

能否请您分享您的要求的详细信息。 如果可能,请分享您想使用 API 实现的源文件和所需的输出。

java 要怎么使用智能对象图层,谢谢

@jackson123

为方便起见,请尝试使用以下示例代码。

public static void TestSmartArt()
{

    String psdPath = "CommonPsb.psd";
    String newPsbPath = "CommonPsbnew.psd";
    String savePath = "CommonPsbnew.psd";
    String savePathPng = "CommonPsbnew.png";
      
       PsdImage psd = (PsdImage)com.aspose.psd.Image.load(psdPath);
        for (int i = 0; i < psd.getLayers().length; i++)
        {
            Layer layer = psd.getLayers()[i];

            if (layer instanceof SmartObjectLayer)
            {
                SmartObjectLayer smart = (SmartObjectLayer)layer;

                // Here we get NullReferenceException
                smart.replaceContents(newPsbPath);

                psd.save(savePath);
                
                PngOptions options=new PngOptions() ;
                options.setColorType(PngColorType.TruecolorWithAlpha );
                psd.save(savePathPng, options);
            }
        }
}

java如果要替换智能对象图层怎么使用呢

我要求您通过共享源文件和所需的输出以及使用的示例代码来具体说明您的要求。 不幸的是,我无法理解您的所有要求,并共享了处理 SmartObject 层访问及其使用的相同pl代码。

智能对象图层能直接与jpeg图像替换吗

@jackson123

你能详细说明一下吗? 您可以在图层内添加图像。 如果这是你想要的

SmartObjectLayer sm = (SmartObjectLayer) layer1;
加了这个:sm.replaceContents(“D:/Vue-project/demo/images/dog.png”);

报错:java.lang.NegativeArraySizeException: null

@jackson123

您只是将图层投射到 SmartObjectLayer,这是不对的。 您只能将类型/实例 SmartObjectLayer 的层类型转换为 SmartObjectLayer。 您需要首先检查图层的类型,然后键入转换。

if(SmartObjectLayer的层实例)
{
   SmartObjectLayer sm = (SmartObjectLayer) layer1;
   添加了这个:sm.replaceContents("D:/Vue-project/demo/images/dog.png");
}

Reference Thread:

for (int i=0,h=Psdimage.getLayers().length;i<h;i++){
Layer layer1 = Psdimage.getLayers()[i];
System.out.println(layer1.getName());
if (layer1 instanceof SmartObjectLayer) {
SmartObjectLayer sm = (SmartObjectLayer) layer1;
sm.replaceContents(“D:/Vue-project/demo/images/dog.png”);
PngOptions options = new PngOptions();
Psdimage.save(data + “package1111.png”, options);
}
}
File file = new File(“images/package1111.png”);
FileInputStream in = new FileInputStream(file);
byte[] bytes = new byte[in.available()];
in.read(bytes, 0, in.available());
return bytes;
}

依然还是报错
java.lang.NegativeArraySizeException: null

@jackson123

请提供源 PSD 文件来重现您的问题。

if(Objects.equals(sm.getName(),“nn”))在本地执行部署在Linux就不执行

@jackson123

按照之前的要求,请提供源 PSD 文件以及重现问题的工作示例代码示例。