PathResource
Inheritance: java.lang.Object
public class PathResource
Rappresenta la risorsa percorso di Photoshop.
Costruttori
| Costruttore | Descrizione |
|---|---|
| PathResource() |
Metodi
| Metodo | Descrizione |
|---|---|
| getBlockId() | Ottiene l’identificatore del blocco. |
| setBlockId(short value) | Imposta l’identificatore del blocco. |
| getName() | Ottiene il nome. |
| setName(String value) | Imposta il nome. |
| getRecords() | Ottiene i record. |
| setRecords(List | Imposta i record. |
Example: The following example shows how to create Clipping Path in TIFF image.
Il seguente esempio mostra come creare un Clipping Path in un’immagine TIFF. Per fare ciò è necessario creare un’istanza della classe PathResource. Il codice seguente dimostra come è possibile creare un percorso vuoto in un’immagine TIFF.
TiffOptions options = new TiffOptions(TiffExpectedFormat.Default);
TiffFrame frame = new TiffFrame(options, 800, 600);
try (TiffImage image = new TiffImage(frame))
{
List<PathResource> list = new ArrayList<PathResource>();
PathResource pr = new PathResource();
pr.setBlockId(2000);
pr.setName("My Clipping Path");
pr.setRecords(new ArrayList<VectorPathRecord>());
image.getActiveFrame().setPathResources(list);
image.save("ImageWithEmptyPath.tiff");
}
Example: Transfer Clipping Paths during export from TIFF to PSD image.
try (Image image = Image.load("Sample.tif"))
{
image.save("SampleWithPaths.psd", new PsdOptions());
}
Example: Create Clipping Path manually.
static void main()
{
try (TiffImage image = (TiffImage)Image.load("Sample.tif"))
{
PathResource res = new PathResource();
res.setBlockId((short) 2000); // Block Id according to Photoshop specification
res.setName("My Clipping Path"); // Path name
res.setRecords(createRecords(0.2f, 0.2f, 0.8f, 0.2f, 0.8f, 0.8f, 0.2f, 0.8f)); // Create path records using coordinates
image.getActiveFrame().setPathResources(Collections.singletonList(res));
image.save("ImageWithPath.tif");
}
}
private static List<VectorPathRecord> createRecords(float ... coordinates)
{
List<VectorPathRecord> records = createBezierRecords(coordinates); // Create Bezier records using coordinates
LengthRecord lr = new LengthRecord(); // LengthRecord required by Photoshop specification
lr.setOpen(false); // Lets create closed path
lr.setRecordCount(records.size()); // Record count in the path
records.add(0, lr);
return records;
}
private static List<VectorPathRecord> createBezierRecords(float[] coordinates)
{
List<VectorPathRecord> l = new LinkedList<VectorPathRecord>();
for (int index = 0; index < coordinates.length - 1; index += 2)
{
PointF pt = new PointF(coordinates[index], coordinates[index + 1]);
BezierKnotRecord br = new BezierKnotRecord();
br.setPathPoints(new PointF[] {pt, pt, pt});
l.add(br);
}
return l;
}
Example: Create Graphics Path from Path Resources in TIFF image.
try (TiffImage image = (TiffImage)Image.load("Bottle.tif"))
{
// Crea il GraphicsPath usando PathResources dall'immagine TIFF
GraphicsPath graphicsPath = PathResourceConverter.toGraphicsPath(
image.getActiveFrame().getPathResources().toArray(new PathResource[0]),
image.getActiveFrame().getSize());
Graphics graphics = new Graphics(image);
// Disegna una linea rossa e salva l'immagine
graphics.drawPath(new Pen(Color.getRed(), 10), graphicsPath);
image.save("BottleWithRedBorder.tif");
}
Example: Create Path Resources using Graphics Path.
static void main()
{
try (TiffImage image = (TiffImage)Image.load("Bottle.tif"))
{
// Crea una Figure rettangolare per GraphicsPath
Figure figure = new Figure();
figure.addShape(createBezierShape(100f, 100f, 500f, 100f, 500f, 1000f, 100f, 1000f));
// Crea GraphicsPath usando la nostra Figure
GraphicsPath graphicsPath = new GraphicsPath();
graphicsPath.addFigure(figure);
// Imposta PathResources usando GraphicsPath
PathResource[] pathResource = PathResourceConverter.fromGraphicsPath(graphicsPath, image.getSize());
image.getActiveFrame().setPathResources(Arrays.asList(pathResource));
// Salva l'immagine
image.save("BottleWithRectanglePath.tif");
}
}
private static BezierShape createBezierShape(float ... coordinates)
{
PointF[] bezierPoints = coordinatesToBezierPoints(coordinates);
return new BezierShape(bezierPoints, true);
}
private static PointF[] coordinatesToBezierPoints(float[] coordinates)
{
PointF[] bezierPoints = new PointF[3 * coordinates.length / 2];
int i = 0;
for (int coordinateIndex = 0; coordinateIndex < coordinates.length - 1; coordinateIndex += 2)
for (int index = 0; index < 3; index++)
{
bezierPoints[i++] = new PointF(coordinates[coordinateIndex], coordinates[coordinateIndex + 1]);
}
return bezierPoints;
}
PathResource()
public PathResource()
getBlockId()
public final short getBlockId()
Ottiene l’identificatore del blocco.
Valore: L’identificatore del blocco.
Returns: short - l’identificatore del blocco.
setBlockId(short value)
public final void setBlockId(short value)
Imposta l’identificatore del blocco.
Valore: L’identificatore del blocco.
Parameters:
| Parametro | Tipo | Descrizione |
|---|---|---|
| valore | short | l’identificatore del blocco. |
getName()
public final String getName()
Ottiene il nome.
Valore: Il nome.
Returns: java.lang.String - il nome.
setName(String value)
public final void setName(String value)
Imposta il nome.
Valore: Il nome.
Parameters:
| Parametro | Tipo | Descrizione |
|---|---|---|
| valore | java.lang.String | il nome. |
getRecords()
public final List<VectorPathRecord> getRecords()
Ottiene i record.
Valore: I record.
Returns: java.util.List<com.aspose.imaging.fileformats.core.vectorpaths.VectorPathRecord> - i record.
setRecords(List value)
public final void setRecords(List<VectorPathRecord> value)
Imposta i record.
Valore: I record.
Parameters:
| Parametro | Tipo | Descrizione |
|---|---|---|
| valore | java.util.List<com.aspose.imaging.fileformats.core.vectorpaths.VectorPathRecord> | i record. |