Aspose.PSD para .NET 21.4 - Notas de Lançamento
Contents
[
Hide
]
Esta página contém notas de lançamento para Aspose.PSD for .NET 21.4
Chave | Resumo | Categoria |
---|---|---|
PSDNET-259 | Renderização do Efeito de Camada de Sobreposição de Padrão | Recurso |
PSDNET-861 | Adicionar propriedades de recurso Vogk desconhecidas para suportar redimensionamento de camadas de forma com caminhos vetoriais na imagem PSD | Recurso |
PSDNET-90 | PSD não convertido corretamente para PDF | Erro |
PSDNET-830 | Exceção ao salvar o arquivo PSD específico com camadas de texto | Erro |
Mudanças na API Pública
APIs Adicionadas:
- P:Aspose.PSD.FileFormats.Core.VectorPaths.VectorShapeOriginSettings.OriginBoxCorners
- P:Aspose.PSD.FileFormats.Core.VectorPaths.VectorShapeOriginSettings.Transform
- P:Aspose.PSD.FileFormats.Core.VectorPaths.VectorShapeOriginSettings.IsOriginBoxCornersPresent
- P:Aspose.PSD.FileFormats.Core.VectorPaths.VectorShapeOriginSettings.IsTransformPresent
- T:Aspose.PSD.FileFormats.Core.VectorPaths.VectorShapeTransform
- M:Aspose.PSD.FileFormats.Core.VectorPaths.VectorShapeTransform.#ctor
- P:Aspose.PSD.FileFormats.Core.VectorPaths.VectorShapeTransform.Xx
- P:Aspose.PSD.FileFormats.Core.VectorPaths.VectorShapeTransform.Xy
- P:Aspose.PSD.FileFormats.Core.VectorPaths.VectorShapeTransform.Yx
- P:Aspose.PSD.FileFormats.Core.VectorPaths.VectorShapeTransform.Yy
- P:Aspose.PSD.FileFormats.Core.VectorPaths.VectorShapeTransform.Tx
- P:Aspose.PSD.FileFormats.Core.VectorPaths.VectorShapeTransform.Ty
APIs Removidas:
- Nenhuma
Exemplos de Uso:
PSDNET-90. PSD não convertido corretamente para PDF
string srcFile = "psd_magical.psd";
string outputJpg = "output.jpg";
string outputPdf = "output.pdf";
using (var psdImage = (PsdImage)Image.Load(srcFile))
{
JpegOptions jpgOptions = new JpegOptions();
PdfOptions pdfOptions = new PdfOptions();
psdImage.Save(outputJpg, jpgOptions);
psdImage.Save(outputPdf, pdfOptions);
}
PSDNET-259. Renderizando o Efeito de Camada de Sobreposição de Padrão
string sourceFile = "imagemComPadrao.psd";
string outputFile = "resultado.png";
using (var image = (PsdImage)Image.Load(sourceFile, new PsdLoadOptions() { LoadEffectsResource = true }))
{
image.Save(outputFile, new PngOptions());
}
PSDNET-861. Adicionar propriedades de recurso Vogk desconhecidas para suportar redimensionamento de camadas de forma com caminhos vetoriais na imagem PSD
// Este exemplo mostra como obter e definir novas propriedades Transform e OriginBoxCorners
// do ShapeOriginSettings no recurso Vogk da FillLayer no arquivo PSD
string sourceFileName = Path.Combine("PSDNET861_1", "formatoVetorial_25_50.psd");
string outputPath = Path.Combine("PSDNET861_1", "resultado.psd");
VectorShapeOriginSettings settingOriginal;
const int indiceCamada = 0;
// Carregar a imagem original
using (PsdImage imagem = (PsdImage)Image.Load(sourceFileName))
{
AssertIsTrue(indiceCamada < imagem.Layers.Length);
var camada = imagem.Layers[indiceCamada];
AssertIsTrue(camada is FillLayer);
var recurso = ObterRecursoVogk((FillLayer)camada);
AssertAreEqual(1, recurso.ShapeOriginSettings.Length);
// Assert após leitura
var configuracao = recurso.ShapeOriginSettings[0];
AssertAreEqual(false, configuracao.IsShapeInvalidatedPresent);
AssertAreEqual(false, configuracao.IsOriginRadiiRectanglePresent);
AssertAreEqual(true, configuracao.IsOriginIndexPresent);
AssertAreEqual(0, configuracao.OriginIndex);
AssertAreEqual(true, configuracao.IsOriginTypePresent);
AssertAreEqual(5, configuracao.OriginType);
AssertAreEqual(true, configuracao.IsOriginShapeBBoxPresent);
AssertAreEqual(Rectangle.FromLeftTopRightBottom(3, 7, 10, 22), configuracao.OriginShapeBox.Bounds);
AssertAreEqual(true, configuracao.IsOriginResolutionPresent);
AssertAreEqual(300d, configuracao.OriginResolution);
// Assertar novas propriedades
AssertAreEqual(true, configuracao.IsTransformPresent);
AssertAreEqual(0d, configuracao.Transform.Tx);
AssertAreEqual(0d, configuracao.Transform.Ty);
AssertAreEqual(0.050000000000000003d, configuracao.Transform.Xx);
AssertAreEqual(0d, configuracao.Transform.Yx);
AssertAreEqual(0d, configuracao.Transform.Xy);
AssertAreEqual(0.1d, configuracao.Transform.Yy);
AssertAreEqual(true, configuracao.IsOriginBoxCornersPresent);
AssertAreEqual(2.9000000000000004d, configuracao.OriginBoxCorners[0]);
AssertAreEqual(7.3000000000000007d, configuracao.OriginBoxCorners[1]);
AssertAreEqual(10.450000000000001d, configuracao.OriginBoxCorners[2]);
AssertAreEqual(7.3000000000000007d, configuracao.OriginBoxCorners[3]);
AssertAreEqual(10.450000000000001d, configuracao.OriginBoxCorners[4]);
AssertAreEqual(22.400000000000002d, configuracao.OriginBoxCorners[5]);
AssertAreEqual(2.9000000000000004d, configuracao.OriginBoxCorners[6]);
AssertAreEqual(22.400000000000002d, configuracao.OriginBoxCorners[7]);
// Definir novas propriedades
settingOriginal = recurso.ShapeOriginSettings[0];
settingOriginal.Transform.Tx = 0.2d;
settingOriginal.Transform.Ty = 0.3d;
settingOriginal.Transform.Xx = 0.4d;
settingOriginal.Transform.Xy = 0.5d;
settingOriginal.Transform.Yx = 0.6d;
settingOriginal.Transform.Yy = 0.7d;
settingOriginal.OriginBoxCorners = new double[8] { 9, 8, 7, 6, 5, 4, 3, 2 };
// Salvar esta imagem PSD com as propriedades alteradas.
imagem.Save(outputPath, new PsdOptions(imagem));
}
// Carregar a imagem PSD salva com as propriedades alteradas
using (PsdImage imagem = (PsdImage)Image.Load(outputPath))
{
var camada = imagem.Layers[indiceCamada];
AssertIsTrue(camada is FillLayer);
var recurso = ObterRecursoVogk((FillLayer)camada);
AssertAreEqual(1, recurso.ShapeOriginSettings.Length);
// Assertar que as propriedades são salvas e carregadas corretamente
var configuracao = recurso.ShapeOriginSettings[0];
AssertAreEqual(true, configuracao.IsOriginIndexPresent);
AssertAreEqual(false, configuracao.IsShapeInvalidatedPresent);
AssertAreEqual(true, configuracao.IsOriginResolutionPresent);
AssertAreEqual(true, configuracao.IsOriginTypePresent);
AssertAreEqual(true, configuracao.IsOriginShapeBBoxPresent);
AssertAreEqual(false, configuracao.IsOriginRadiiRectanglePresent);
AssertAreEqual(0, configuracao.OriginIndex);
AssertAreEqual(true, configuracao.IsTransformPresent);
AssertAreEqual(0.2d, configuracao.Transform.Tx);
AssertAreEqual(0.3d, configuracao.Transform.Ty);
AssertAreEqual(0.4d, configuracao.Transform.Xx);
AssertAreEqual(0.5d, configuracao.Transform.Xy);
AssertAreEqual(0.6d, configuracao.Transform.Yx);
AssertAreEqual(0.7d, configuracao.Transform.Yy);
AssertAreEqual(true, configuracao.IsOriginBoxCornersPresent);
AssertAreEqual(settingOriginal.OriginBoxCorners[0], configuracao.OriginBoxCorners[0]);
AssertAreEqual(settingOriginal.OriginBoxCorners[1], configuracao.OriginBoxCorners[1]);
AssertAreEqual(settingOriginal.OriginBoxCorners[2], configuracao.OriginBoxCorners[2]);
AssertAreEqual(settingOriginal.OriginBoxCorners[3], configuracao.OriginBoxCorners[3]);
AssertAreEqual(settingOriginal.OriginBoxCorners[4], configuracao.OriginBoxCorners[4]);
AssertAreEqual(settingOriginal.OriginBoxCorners[5], configuracao.OriginBoxCorners[5]);
AssertAreEqual(settingOriginal.OriginBoxCorners[6], configuracao.OriginBoxCorners[6]);
AssertAreEqual(settingOriginal.OriginBoxCorners[7], configuracao.OriginBoxCorners[7]);
}
VogkResource ObterRecursoVogk(FillLayer camada)
{
if (camada == null)
{
throw new PsdImageArgumentException("O parâmetro layer não deve ser nulo.");
}
VogkResource recurso = null;
var recursos = camada.Resources;
for (int i = 0; i < recursos.Length; i++)
{
if (recursos[i] is VogkResource)
{
recurso = (VogkResource)recursos[i];
break;
}
}
if (recurso == null)
{
throw new PsdImageException("Recurso Vogk não encontrado.");
}
return recurso;
}
void AssertIsTrue(bool condicao)
{
if (!condicao)
{
throw new FormatException(string.Format("Esperado verdadeiro"));
}
}
void AssertAreEqual(object atual, object esperado)
{
if (!object.Equals(atual, esperado))
{
throw new FormatException(string.Format("O valor atual {0} não é igual ao esperado {1}.", atual, esperado));
}
}