Recursos Compatibles
Soporte de GdFlResource
Este artículo muestra el soporte de GdFlResource en un archivo PSD con Aspose.PSD. El siguiente fragmento de código te muestra cómo Aspose.PSD admite GdFlResource.
String dataDir = Utils.getDataDir(SupportOfGdFlResource.class) + "PSD/"; | |
String sourceFileName = dataDir + "ComplexGradientFillLayer.psd"; | |
String exportPath = dataDir + "ComplexGradientFillLayer_after.psd"; | |
PsdImage im = (PsdImage) Image.load(sourceFileName); | |
try { | |
for (Layer layer : im.getLayers()) { | |
if (layer instanceof FillLayer) { | |
FillLayer fillLayer = (FillLayer) layer; | |
for (LayerResource res : fillLayer.getResources()) { | |
if (res instanceof GdFlResource) { | |
// Reading | |
GdFlResource resource = (GdFlResource) res; | |
if (resource.getAlignWithLayer() != false || | |
(Math.abs(resource.getAngle() - 45.0) > 0.001) || | |
resource.getDither() != true || | |
resource.getReverse() != false || | |
!resource.getColor().equals(Color.getEmpty()) || | |
Math.abs(resource.getHorizontalOffset() - (-39)) > 0.001 || | |
Math.abs(resource.getVerticalOffset() - (-5)) > 0.001 || | |
resource.getTransparencyPoints().length != 3 || | |
resource.getColorPoints().length != 2) { | |
throw new RuntimeException("Resource Parameters were read wrong"); | |
} | |
IGradientTransparencyPoint[] transparencyPoints = resource.getTransparencyPoints(); | |
if (Math.abs(100.0 - transparencyPoints[0].getOpacity()) > 0.25 || | |
transparencyPoints[0].getLocation() != 0 || | |
transparencyPoints[0].getMedianPointLocation() != 50 || | |
Math.abs(50.0 - transparencyPoints[1].getOpacity()) > 0.25 || | |
transparencyPoints[1].getLocation() != 2048 || | |
transparencyPoints[1].getMedianPointLocation() != 50 || | |
Math.abs(100.0 - transparencyPoints[2].getOpacity()) > 0.25 || | |
transparencyPoints[2].getLocation() != 4096 || | |
transparencyPoints[2].getMedianPointLocation() != 50) { | |
throw new RuntimeException("Gradient Transparency Points were read Wrong"); | |
} | |
IGradientColorPoint[] colorPoints = resource.getColorPoints(); | |
if (!colorPoints[0].getColor().equals(Color.fromArgb(203, 64, 140)) || | |
colorPoints[0].getLocation() != 0 || | |
colorPoints[0].getMedianPointLocation() != 50 || | |
!colorPoints[1].getColor().equals(Color.fromArgb(203, 0, 0)) || | |
colorPoints[1].getLocation() != 4096 || | |
colorPoints[1].getMedianPointLocation() != 50) { | |
throw new RuntimeException("Gradient Color Points were read Wrong"); | |
} | |
// Editing | |
resource.setAngle(30.0); | |
resource.setDither(false); | |
resource.setAlignWithLayer(true); | |
resource.setReverse(true); | |
resource.setHorizontalOffset(25); | |
resource.setVerticalOffset(-15); | |
List<IGradientColorPoint> newColorPoints = new ArrayList<IGradientColorPoint>(); | |
Collections.addAll(newColorPoints, resource.getColorPoints()); | |
List<IGradientTransparencyPoint> newTransparencyPoints = new ArrayList<IGradientTransparencyPoint>(); | |
Collections.addAll(newTransparencyPoints, resource.getTransparencyPoints()); | |
GradientColorPoint gr = new GradientColorPoint(); | |
gr.setMedianPointLocation(75); | |
gr.setLocation(4096); | |
gr.setColor(Color.getViolet()); | |
newColorPoints.add(gr); | |
colorPoints[1].setLocation(3000); | |
GradientTransparencyPoint gr2 = new GradientTransparencyPoint(); | |
gr2.setOpacity(80.0); | |
gr2.setLocation(4096); | |
gr2.setMedianPointLocation(25); | |
newTransparencyPoints.add(gr2); | |
transparencyPoints[2].setLocation(3000); | |
resource.setColorPoints(newColorPoints.toArray(new IGradientColorPoint[0])); | |
resource.setTransparencyPoints(newTransparencyPoints.toArray(new IGradientTransparencyPoint[0])); | |
im.save(exportPath); | |
} | |
break; | |
} | |
break; | |
} | |
} | |
} finally { | |
im.dispose(); | |
} |
Soporte de VmskResource
Este artículo muestra el soporte de VmskResource en un archivo PSD con Aspose.PSD. El siguiente fragmento de código te muestra cómo Aspose.PSD admite VmskResource.
String dataDir = Utils.getDataDir(SupportOfVmskResource.class) + "PSD/"; | |
String sourceFileName = dataDir + "Rectangle.psd"; | |
String exportPath = dataDir + "Rectangle_changed.psd"; | |
PsdImage im = (PsdImage) Image.load(sourceFileName); | |
try { | |
VmskResource resource = getVmskResource(im); | |
// Reading | |
if (resource.isDisabled() != false || | |
resource.isInverted() != false || | |
resource.isNotLinked() != false || | |
resource.getPaths().length != 7 || | |
resource.getPaths()[0].getType() != VectorPathType.PathFillRuleRecord || | |
resource.getPaths()[1].getType() != VectorPathType.InitialFillRuleRecord || | |
resource.getPaths()[2].getType() != VectorPathType.ClosedSubpathLengthRecord || | |
resource.getPaths()[3].getType() != VectorPathType.ClosedSubpathBezierKnotUnlinked || | |
resource.getPaths()[4].getType() != VectorPathType.ClosedSubpathBezierKnotUnlinked || | |
resource.getPaths()[5].getType() != VectorPathType.ClosedSubpathBezierKnotUnlinked || | |
resource.getPaths()[6].getType() != VectorPathType.ClosedSubpathBezierKnotUnlinked) { | |
throw new RuntimeException("VmskResource was read wrong"); | |
} | |
PathFillRuleRecord pathFillRule = (PathFillRuleRecord) resource.getPaths()[0]; | |
InitialFillRuleRecord initialFillRule = (InitialFillRuleRecord) resource.getPaths()[1]; | |
LengthRecord subpathLength = (LengthRecord) resource.getPaths()[2]; | |
// Path fill rule doesn't contain any additional information | |
if (pathFillRule.getType() != VectorPathType.PathFillRuleRecord || | |
initialFillRule.getType() != VectorPathType.InitialFillRuleRecord || | |
initialFillRule.isFillStartsWithAllPixels() != false || | |
subpathLength.getType() != VectorPathType.ClosedSubpathLengthRecord || | |
subpathLength.isClosed() != true || | |
subpathLength.isOpen() != false) { | |
throw new RuntimeException("VmskResource paths were read wrong"); | |
} | |
// Editing | |
resource.setDisabled(true); | |
resource.setInverted(true); | |
resource.setNotLinked(true); | |
BezierKnotRecord bezierKnot = (BezierKnotRecord) resource.getPaths()[3]; | |
bezierKnot.getPoints()[0] = new Point(0, 0); | |
bezierKnot = (BezierKnotRecord) resource.getPaths()[4]; | |
bezierKnot.getPoints()[0] = new Point(8039797, 10905190); | |
initialFillRule.setFillStartsWithAllPixels(true); | |
subpathLength.setClosed(false); | |
im.save(exportPath); | |
} finally { | |
im.dispose(); | |
} |
Soporte de SoCoResource
SoCoResource contiene información sobre las capas de relleno de color. Este artículo demuestra cómo Aspose.PSD para Java admite SoCoResource en un archivo PSD.
- Cargar un archivo PSD como una imagen usando el método de fábrica Load expuesto por la clase Image.
- Obtener SoCoResource de la capa de imagen
- Establecer propiedades requeridas
- Guardar los resultados
El siguiente fragmento de código muestra cómo Aspose.PSD para Java admite SoCoResource.
String dataDir = Utils.getDataDir(SupportOfSoCoResource.class) + "ModifyingAndConvertingImages/"; | |
String sourceFileName = dataDir + "ColorFillLayer.psd"; | |
String exportPath = dataDir + "SoCoResource_Edited.psd"; | |
PsdImage im = (PsdImage) Image.load(sourceFileName); | |
try { | |
for (Layer layer : im.getLayers()) { | |
if (layer instanceof FillLayer) { | |
FillLayer fillLayer = (FillLayer) layer; | |
for (LayerResource resource : fillLayer.getResources()) { | |
if (resource instanceof SoCoResource) { | |
SoCoResource socoResource = (SoCoResource) resource; | |
assert Color.fromArgb(63, 83, 141).equals(socoResource.getColor()); | |
socoResource.setColor(Color.getRed()); | |
break; | |
} | |
} | |
break; | |
} | |
im.save(exportPath); | |
} | |
} finally { | |
im.dispose(); | |
} |