图层转换为智能对象图层 再替换智能对象图层
能否请您分享您的要求的详细信息。 如果可能,请分享您想使用 API 实现的源文件和所需的输出。
java 要怎么使用智能对象图层,谢谢
为方便起见,请尝试使用以下示例代码。
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图像替换吗
SmartObjectLayer sm = (SmartObjectLayer) layer1;
加了这个:sm.replaceContents(“D:/Vue-project/demo/images/dog.png”);
报错:java.lang.NegativeArraySizeException: null
您只是将图层投射到 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
if(Objects.equals(sm.getName(),“nn”))在本地执行部署在Linux就不执行