Aspose.PSD for .NET 20.4 - Notas da Versão
Contents
[
Hide
]
Esta página contém notas de lançamento para Aspose.PSD for .NET 20.4
Chave | Resumo | Categoria |
---|---|---|
PSDNET-567 | Suporte ao recurso ‘Vector Origination Data’ | Recurso |
PSDNET-373 | Suporte a lclrResource (Configuração de cor da planilha) | Recurso |
PSDNET-563 | Suporte a propriedades de dados LengthRecord. (Operações de caminho (operações booleanas), índice da forma na camada, contagem dos registros de nó de bezier) | Recurso |
PSDNET-425 | Suporte ao recurso de Seção de Imagem #1010 Cor de fundo | Recurso |
PSDNET-530 | Adição de Camadas de Preenchimento em tempo de execução | Recurso |
PSDNET-424 | Suporte ao recurso de Seção de Imagem #1009 Informações de borda | Recurso |
PSDNET-592 | Suporte a Camadas em Arquivos de Formato AI | Recurso |
PSDNET-256 | Suporte à Leitura e Edição do Efeito de Sobreposição de Gradiente | Recurso |
PSDNET-257 | Renderização do Efeito de Sobreposição de Gradiente | Recurso |
PSDNET-585 | As alterações na propriedade GradientOverlayEffect.BlendMode não são exibidas no Photoshop | Erro |
PSDNET-561 | Correção ao salvar imagem PSD com ColorMode em Escala de Cinza e 16 bits por canal para formato PSD em escala de cinza | Erro |
PSDNET-560 | Correção ao salvar imagem PSD com ColorMode em Escala de Cinza e 16 bits por canal para formato PNG | Erro |
Mudanças na API Pública
APIs Adicionadas:
- P:Aspose.PSD.FileFormats.Ai.AiLayerSection.Name
- P:Aspose.PSD.FileFormats.Ai.AiLayerSection.IsTemplate
- P:Aspose.PSD.FileFormats.Ai.AiLayerSection.IsLocked
- P:Aspose.PSD.FileFormats.Ai.AiLayerSection.IsShown
- P:Aspose.PSD.FileFormats.Ai.AiLayerSection.IsPrinted
- P:Aspose.PSD.FileFormats.Ai.AiLayerSection.IsPreview
- P:Aspose.PSD.FileFormats.Ai.AiLayerSection.IsImagesDimmed
- P:Aspose.PSD.FileFormats.Ai.AiLayerSection.DimValue
- P:Aspose.PSD.FileFormats.Ai.AiLayerSection.ColorNumber
- P:Aspose.PSD.FileFormats.Ai.AiLayerSection.Red
- P:Aspose.PSD.FileFormats.Ai.AiLayerSection.Green
- P:Aspose.PSD.FileFormats.Ai.AiLayerSection.Blue
- M:Aspose.PSD.FileFormats.Psd.Layers.FillLayers.FillLayer.CreateInstance(Aspose.PSD.FileFormats.Psd.Layers.FillSettings.FillType)
- T:Aspose.PSD.FileFormats.Psd.Resources.BackgroundColorResource
- M:Aspose.PSD.FileFormats.Psd.Resources.BackgroundColorResource.#ctor
- P:Aspose.PSD.FileFormats.Psd.Resources.BackgroundColorResource.DataSize
- P:Aspose.PSD.FileFormats.Psd.Resources.BackgroundColorResource.MinimalVersion
- P:Aspose.PSD.FileFormats.Psd.Resources.BackgroundColorResource.Color
- T:Aspose.PSD.FileFormats.Psd.Resources.BorderInformationResource
- M:Aspose.PSD.FileFormats.Psd.Resources.BorderInformationResource.#ctor
- P:Aspose.PSD.FileFormats.Psd.Resources.BorderInformationResource.DataSize
- P:Aspose.PSD.FileFormats.Psd.Resources.BorderInformationResource.MinimalVersion
- P:Aspose.PSD.FileFormats.Psd.Resources.BorderInformationResource.Width
- P:Aspose.PSD.FileFormats.Psd.Resources.BorderInformationResource.Unit
- M:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VectorPaths.BezierKnotRecord.#ctor
- M:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VectorPaths.InitialFillRuleRecord.#ctor(System.Boolean)
- M:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VectorPaths.LengthRecord.#ctor
- P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VectorPaths.LengthRecord.BezierKnotRecordsCount
- P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VectorPaths.LengthRecord.PathOperations
- P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VectorPaths.LengthRecord.ShapeIndex
- T:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VogkResource
- M:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VogkResource.#ctor
- M:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VogkResource.Save(Aspose.PSD.StreamContainer,System.Int32)
- F:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VogkResource.TypeToolKey
- P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VogkResource.Signature
- P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VogkResource.Key
- P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VogkResource.PsdVersion
- P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VogkResource.Version
- P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VogkResource.Length
- P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VogkResource.ShapeOriginSettings
- T:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VectorPaths.VectorShapeOriginSettings
- M:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VectorPaths.VectorShapeOriginSettings.#ctor(System.Boolean,System.Int32)
- P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VectorPaths.VectorShapeOriginSettings.IsShapeInvalidated
- P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VectorPaths.VectorShapeOriginSettings.OriginIndex
- T:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VectorPaths.PathOperations
- F:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VectorPaths.PathOperations.ExcludeOverlappingShapes
- F:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VectorPaths.PathOperations.CombineShapes
- F:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VectorPaths.PathOperations.SubtractFrontShape
- F:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VectorPaths.PathOperations.IntersectShapeAreas
- M:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VectorPathDataResource.#ctor
- M:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VsmsResource.#ctor
- M:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.VmskResource.#ctor
- M:Aspose.PSD.FileFormats.Psd.Layers.FillSettings.GradientColorPoint.#ctor(Aspose.PSD.Color,System.Int32,System.Int32)
APIs Removidas:
- Nenhuma
Exemplos de Uso:
PSDNET-567. Suporte ao recurso ‘Vector Origination Data’
// Suporte a VogkResource
static void ExemploDeSuporteAVectorOriginationData()
{
string nomeArquivo = "VectorOriginationDataResource.psd";
string nomeArquivoSaida = "out_VectorOriginationDataResource_.psd";
using (var imagemPsd = (PsdImage)Image.Load(nomeArquivo))
{
var recurso = ObterVogkResource(imagemPsd);
// Leitura
if (recurso.ShapeOriginSettings.Length != 1 ||
!recurso.ShapeOriginSettings[0].IsShapeInvalidated ||
recurso.ShapeOriginSettings[0].OriginIndex != 0)
{
throw new Exception("VogkResource foi lido incorretamente.");
}
// Edição
recurso.ShapeOriginSettings = new[]
{
recurso.ShapeOriginSettings[0],
new VectorShapeOriginSettings(true, 1)
};
imagemPsd.Save(nomeArquivoSaida);
}
}
static VogkResource ObterVogkResource(PsdImage imagem)
{
var camada = imagem.Layers[1];
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 Exception("Recurso VogkResource não encontrado.");
}
return recurso;
}
PSDNET-373. Suporte a lclrResource (Configuração de cor da planilha)
static void VerificarCoresDaPlanilhaEInverter(SheetColorHighlightEnum[] coresPlanilha, PsdImage img)
{
int contagemCamadas = img.Layers.Length;
for (int indiceCamada = 0; indiceCamada < contagemCamadas; indiceCamada++)
{
Camada camada = img.Layers[indiceCamada];
LayerResource[] recursos = camada.Resources;
foreach (LayerResource recursoCamada in recursos)
{
// O recurso lcrl está sempre presente na lista de recursos do arquivo psd.
LclrResource recurso = recursoCamada as LclrResource;
if (recurso != null)
{
if (recurso.Color != coresPlanilha[indiceCamada])
{
throw new Exception("A cor da Planilha foi lida incorretamente.");
}
// Inversão das cores da planilha. Configuração da cor de destaque da camada.
recurso.Color = coresPlanilha[contagemCamadas - indiceCamada - 1];
break;
}
}
}
}
string caminhoArquivoFonte = "TodasAsCoresLclrResource.psd";
string caminhoArquivoSaida = "TodasAsCoresLclrResourceInvertidas.psd";
// No arquivo as cores de destaque das camadas estão nessa ordem
SheetColorHighlightEnum[] coresPlanilha = new SheetColorHighlightEnum[] {
SheetColorHighlightEnum.Vermelho,
SheetColorHighlightEnum.Laranja,
SheetColorHighlightEnum.Amarelo,
SheetColorHighlightEnum.Verde,
SheetColorHighlightEnum.Azul,
SheetColorHighlightEnum.Violeta,
SheetColorHighlightEnum.Cinza,
SheetColorHighlightEnum.SemCor
};
// A Cor da Planilha é usada para destacar visualmente as camadas.
// Por exemplo, você pode atualizar algumas camadas no PSD e depois destacá-las por cor para chamar a atenção.
using (PsdImage img = (PsdImage)Image.Load(caminhoArquivoFonte))
{
VerificarCoresDaPlanilhaEInverter(coresPlanilha, img);
img.Save(caminhoArquivoSaida, new PsdOptions());
}
using (PsdImage img = (PsdImage)Image.Load(caminhoArquivoSaida))
{
// As cores devem ser invertidas
Array.Reverse(coresPlanilha);
VerificarCoresDaPlanilhaEInverter(coresPlanilha, img);
}
PSDNET-563. Suporte a propriedades de dados LengthRecord. (Operações de caminho (operações booleanas), índice da forma na camada, contagem dos registros de nó de bezier)
string nomeArquivo = "OperacoesDeCaminhoForma.psd";
using (var im = (PsdImage)Image.Load(nomeArquivo))
{
VsmsResource recurso = null;
foreach (var recursoCamada in im.Layers[1].Resources)
{
if (recursoCamada is VsmsResource)
{
recurso = (VsmsResource)recursoCamada;
break;
}
}
LengthRecord registroComprimento0 = (LengthRecord)recurso.Paths[2];
LengthRecord registroComprimento1 = (LengthRecord)recurso.Paths[7];
LengthRecord registroComprimento2 = (LengthRecord)recurso.Paths[11];
// Aqui estamos mudando a forma de combinar entre formas.
registroComprimento0.PathOperations = PathOperations.ExcludeOverlappingShapes;
registroComprimento1.PathOperations = PathOperations.IntersectShapeAreas;
registroComprimento2.PathOperations = PathOperations.SubtractFrontShape;
im.Save("out_" + nomeArquivo);
}
PSDNET-425. Suporte ao recurso de Seção de Imagem #1010 Cor de fundo
string caminhoArquivoFonte = "entrada.psd";
string caminhoArquivoSaida = "saida.psd";
using (var imagem = (PsdImage)Image.Load(caminhoArquivoFonte))
{
ResourceBlock[] recursosImagem = imagem.ImageResources;
BackgroundColorResource recursoCorFundo = null;
foreach (var recursoImagem in recursosImagem)
{
if (recursoImagem is BackgroundColorResource)
{
recursoCorFundo = (BackgroundColorResource)recursoImagem;
break;
}
}
// atualizar BackgroundColorResource
recursoCorFundo.Color = Color.VermelhoEscuro;
imagem.Save(caminhoArquivoSaida);
}
PSDNET-530. Adição de Camadas de Preenchimento em tempo de execução
string psdSaida = "saida.psd";
using (var imagem = new PsdImage(100, 100))
{
FillLayer camadaPreenchimentoCor = FillLayer.CreateInstance(FillType.Color);
camadaPreenchimentoCor.DisplayName = "Camada de Preenchimento de Cor";
imagem.AddLayer(camadaPreenchimentoCor);
FillLayer camadaPreenchimentoGradiente = FillLayer.CreateInstance(FillType.Gradient);
camadaPreenchimentoGradiente.DisplayName = "Camada de Preenchimento de Gradiente";
imagem.AddLayer(camadaPreenchimentoGradiente);
FillLayer camadaPreenchimentoPadrao = FillLayer.CreateInstance(FillType.Pattern);
camadaPreenchimentoPadrao.DisplayName = "Camada de Preenchimento de Padrão";
camadaPreenchimentoPadrao.Opacity = 50;
imagem.AddLayer(camadaPreenchimentoPadrao);
imagem.Save(psdSaida);
}
PSDNET-424. Suporte ao recurso de Seção de Imagem #1009 Informações de borda
string caminhoArquivoFonte = "entrada.psd";
string caminhoArquivoSaida = "saida.psd";
using (var imagem = (PsdImage)Image.Load(caminhoArquivoFonte))
{
ResourceBlock[] recursosImagem = imagem.ImageResources;
BorderInformationResource recursoInfoBorda = null;
foreach (var recursoImagem in recursosImagem)
{
if (recursoImagem is BorderInformationResource)
{
recursoInfoBorda = (BorderInformationResource)recursoImagem;
break;
}
}
// atualizar BorderInformationResource
recursoInfoBorda.Width = 0.1;
recursoInfoBorda.Unit = PhysicalUnit.Polegadas;
imagem.Save(caminhoArquivoSaida);
}
PSDNET-592. Suporte a Camadas em Arquivos de Formato AI
void AssertOneTrue(bool condicao, string mensagem)
{
if (!condicao)
{
throw new FormatException(mensagem);
}
}
string nomeArquivoFonte = "form_8_2l3_7.ai";
string nomeArquivoSaida = "form_8_2l3_7_export";
using (AiImage imagem = (AiImage)Image.Load(nomeArquivoFonte))
{
AiLayerSection camada0 = imagem.Layers[0];
AssertOneTrue(camada0 != null, "A Camada 0 não deveria ser nula.");
AssertOneTrue(camada0.Name == "Camada 4", "A propriedade Nome da Camada 0 deveria ser Camada 4");
AssertOneTrue(!camada0.IsTemplate, "A propriedade IsTemplate da Camada 0 deveria ser falsa.");
AssertOneTrue(camada0.IsLocked, "A propriedade IsLocked da Camada 0 deveria ser verdadeira.");
AssertOneTrue(camada0.IsShown, "A propriedade IsShown da Camada 0 deveria ser verdadeira.");
AssertOneTrue(camada0.IsPrinted, "A propriedade IsPrinted da Camada 0 deveria ser verdadeira.");
AssertOneTrue(!camada0.IsPreview, "A propriedade IsPreview da Camada 0 deveria ser falsa.");
AssertOneTrue(camada0.IsImagesDimmed, "A propriedade IsImagesDimmed da Camada 0 deveria ser verdadeira.");
AssertOneTrue(camada0.DimValue == 51, "A propriedade DimValue da Camada 0 deveria ser 51.");
AssertOneTrue(camada0.ColorNumber == 0, "A propriedade ColorNumber da Camada 0 deveria ser 0.");
AssertOneTrue(cam