Notas de Lançamento Aspose.PSD para .NET 24.6
Contents
[
Hide
]
Esta página contém as notas de lançamento para Aspose.PSD para .NET 24.6
Chave | Resumo | Categoria |
---|---|---|
PSDNET-1450 | Implementar suporte para camada de mapa de gradiente | Funcionalidade |
PSDNET-1670 | [Formato AI] Adicionar suporte para Metadados XPacket ao Formato AI | Funcionalidade |
PSDNET-1831 | Implementar tipos de distorção Inflate, Squeeze e Twist | Funcionalidade |
PSDNET-1653 | Modos Rgb e Lab não podem conter menos de 3 canais e mais de 4 canais no arquivo com Camadas de ArtBoard | Bug |
PSDNET-1775 | A área de processamento superior deve ser positiva. (Parâmetro ‘areaToProcess’) no processamento de um arquivo específico | Bug |
PSDNET-2052 | A imagem expandida sobre o canvas é cortada após o salvamento. Os dados são perdidos, mas a visualização parece correta | Bug |
Alterações na API Pública
APIs Adicionadas:
- P:Aspose.PSD.FileFormats.Psd.Layers.FillSettings.NoiseGradientFillSettings.ExpansionCount
- M:Aspose.PSD.FileFormats.Psd.PsdImage.AddGradientMapAdjustmentLayer
- T:Aspose.PSD.FileFormats.Psd.Layers.AdjustmentLayers.GradientMapLayer
- P:Aspose.PSD.FileFormats.Psd.Layers.AdjustmentLayers.GradientMapLayer.GradientSettings
- P:Aspose.PSD.FileFormats.Ai.AiImage.XmpData
APIs Removidas:
- Nenhuma
Exemplos de Uso:
PSDNET-1450. Implementar suporte para camada de mapa de gradiente
string arquivoFonte = Path.Combine(pastaBase, "gradient_map_src.psd");
string arquivoSaida = Path.Combine(pastaSaida, "gradient_map_src_output.psd");
using (PsdImage imagem = (PsdImage)Image.Load(arquivoFonte))
{
// Adicionar camada de ajuste do mapa de gradiente.
GradientMapLayer camada = imagem.AddGradientMapAdjustmentLayer();
camada.GradientSettings.Reverse = true;
imagem.Save(arquivoSaida);
}
// Verificar alterações salvas
using (PsdImage imagem = (PsdImage)Image.Load(arquivoSaida))
{
GradientMapLayer camadaMapaGradiente = imagem.Layers[1] as GradientMapLayer;
GradientFillSettings configGradiente = (GradientFillSettings)camadaMapaGradiente.GradientSettings;
AssertAreEqual(0.0, configGradiente.Angle);
AssertAreEqual((short)4096, configGradiente.Interpolation);
AssertAreEqual(true, configGradiente.Reverse);
AssertAreEqual(false, configGradiente.AlignWithLayer);
AssertAreEqual(false, configGradiente.Dither);
AssertAreEqual(GradientType.Linear, configGradiente.GradientType);
AssertAreEqual(100, configGradiente.Scale);
AssertAreEqual(0.0, configGradiente.HorizontalOffset);
AssertAreEqual(0.0, configGradiente.VerticalOffset);
AssertAreEqual("Personalizado", configGradiente.GradientName);
}
void AssertAreEqual(object esperado, object atual, string mensagem = null)
{
if (!object.Equals(esperado, atual))
{
throw new Exception(mensagem ?? "Os objetos não são iguais.");
}
}
PSDNET-1670. [Formato AI] Adicionar suporte para Metadados XPacket ao Formato AI
string arquivoFonte = Path.Combine(pastaBase, "ai_one.ai");
void AssertAreEqual(object esperado, object atual)
{
if (!object.Equals(esperado, atual))
{
throw new Exception("Os objetos não são iguais.");
}
}
void AssertIsNotNull(object objetoTeste)
{
if (objetoTeste == null)
{
throw new Exception("O objeto de teste é nulo.");
}
}
string chaveCreatorTool = ":CreatorTool";
string chaveNPaginas = "xmpTPg:NPages";
string chaveUnidade = "stDim:unit";
string chaveAltura = "stDim:h";
string chaveLargura = "stDim:w";
string criadorEsperado = "Adobe Illustrator CC 22.1 (Windows)";
string nPaginasEsperado = "1";
string unidadeEsperada = "Pixels";
double alturaEsperada = 768;
double larguraEsperada = 1366;
using (AiImage imagem = (AiImage)Image.Load(arquivoFonte))
{
// Os Metadados Xmp foram adicionados.
var metadadosXmp = imagem.XmpData;
AssertIsNotNull(metadadosXmp);
// Agora podemos acessar os Pacotes Xmp dos arquivos AI.
var pacoteBasico = metadadosXmp.GetPackage(Namespaces.XmpBasic) as XmpBasicPackage;
var pacote = metadadosXmp.Packages[4];
// E temos acesso ao conteúdo desses pacotes.
var ferramentaCriacao = pacoteBasico[chaveCreatorTool].ToString();
var nPaginas = pacote[chaveNPaginas];
var unidade = pacote[chaveUnidade];
var altura = double.Parse(pacote[chaveAltura].ToString(), CultureInfo.InvariantCulture);
var largura = double.Parse(pacote[chaveLargura].ToString(), CultureInfo.InvariantCulture);
AssertAreEqual(ferramentaCriacao, criadorEsperado);
AssertAreEqual(nPaginas, nPaginasEsperado);
AssertAreEqual(unidade, unidadeEsperada);
AssertAreEqual(altura, alturaEsperada);
AssertAreEqual(largura, larguraEsperada);
}
PSDNET-1831. Implementar tipos de distorção Inflate, Squeeze e Twist
string[] arquivos = { "Twist", "Squeeze", "Squeeze_vert", "Inflate" };
foreach (string prefixo in arquivos)
{
string arquivoFonte = Path.Combine(pastaBase, prefixo + ".psd");
string arquivoSaida = Path.Combine(pastaSaida, prefixo + "_export.png");
using (var imagemPsd = (PsdImage)Image.Load(arquivoFonte, new PsdLoadOptions() { AllowWarpRepaint = true, LoadEffectsResource = true }))
{
imagemPsd.Save(arquivoSaida, new PngOptions
{
ColorType = PngColorType.TruecolorWithAlpha
});
}
}
PSDNET-1653. Os modos Rgb e Lab não podem conter menos de 3 canais e mais de 4 canais no arquivo com Camadas de ArtBoard
string arquivoFonte = Path.Combine(pastaBase, "Rgb5Channels.psb");
string arquivoSaida = Path.Combine(pastaSaida, "Rgb5Channels_output.psd");
using (PsdImage imagem = (PsdImage)Aspose.PSD.Image.Load(arquivoFonte))
{
// Aqui não deve ocorrer exceção
imagem.Save(arquivoSaida);
}
PSDNET-1775. A área de processamento superior deve ser positiva. (Parâmetro ‘areaToProcess’) no processamento de um arquivo específico
string arquivoFonte = @"BANNERS_2_Intel-Gamer_psak.psd";
string arquivoSaida = @"BANNERS_2_Intel-Gamer_psak_out.psd";
PsdLoadOptions opcoesCarregamento = new PsdLoadOptions();
opcoesCarregamento.LoadEffectsResource = true;
opcoesCarregamento.AllowWarpRepaint = true;
using (PsdImage imagem = (PsdImage)PsdImage.Load(arquivoFonte, opcoesCarregamento))
{
imagem.Save(arquivoSaida);
// Não deveria ocorrer exceção
}
PSDNET-2052. A imagem expandida sobre o canvas é cortada após o salvamento. Os dados são perdidos, mas a visualização parece correta
string arquivoFonte = Path.Combine(pastaBase, "bigfile.psd");
string arquivoSaida = Path.Combine(pastaSaida, "bigfile_output.psd");
string imagemSaida = Path.Combine(pastaSaida, "bigfile.png");
PsdLoadOptions opcoesCarregamento = new PsdLoadOptions()
{
LoadEffectsResource = true,
UseDiskForLoadEffectsResource = true
};
using (var imagemPsd = (PsdImage)Image.Load(arquivoFonte, opcoesCarregamento))
{
// Não deve haver erro aqui
imagemPsd.Save(arquivoSaida, new PsdOptions { CompressionMethod = CompressionMethod.RLE });
}
using (var imagemPsd = (PsdImage)Image.Load(arquivoSaida, opcoesCarregamento))
{
imagemPsd.Resize(imagemPsd.Width / 10, imagemPsd.Height / 10);
// Não deve haver erro aqui
imagemPsd.Save(imagemSaida, new PngOptions { ColorType = PngColorType.TruecolorWithAlpha });
}