Note sulla versione di rilascio di Aspose.PSD per .NET 20.2
Chiave | Sommario | Categoria |
---|---|---|
PSDNET-206 | Miglioramento della capacità di renderizzare testi di diversi colori nel livello di testo | Funzionalità |
PSDNET-369 | Supporto della risorsa clbl (Layer resource contains info about Blend clipping elements) | Funzionalità |
PSDNET-274 | Supporto della risorsa blwh (La risorsa contiene dati del Livello di Regolazione Bianco e Nero) | Funzionalità |
PSDNET-230 | Possibilità di esportare Gruppo Livelli in Jpeg/Png/Tiff/Gif/Bmp/Jpeg2000/Psd/Psb/Pdf | Funzionalità |
PSDNET-372 | Supporto della risorsa lspf (Contiene impostazioni sulle impostazioni di protezione del livello) | Funzionalità |
PSDNET-370 | Supporto della risorsa infx (Contiene dati relativi al blending degli elementi interni) | Funzionalità |
PSDNET-251 | Refactoring di PsdImage e Layer per modificare il comportamento di trasformazione (Ridimensionamento/cambio di rotazione/ritaglio corretto per i mask dei livelli se trasformiamo un livello separatamente) | Miglioramento |
PSDNET-276 | In alcune impostazioni di globalizzazione, l’immagine raster AI non può essere aperta | Bug |
PSDNET-194 | Dopo aver eseguito l’operazione FlipRotate su un livello, l’immagine PSD diventa illeggibile | Bug |
PSDNET-177. | System.ArgumentException durante il caricamento del file PSD | Bug |
PSDNET-249 | Dopo aver usato un metodo di trasformazione solo per un livello, il livello salvato ha limiti o una maschera incorretti | Bug |
Modifiche dell’API pubblica
API Aggiunte:
- P:Aspose.PSD.FileFormats.Psd.Layers.LayerMaskDataFull.UserMaskRectangle
- M:Aspose.PSD.FileFormats.Ai.AiDataSection.ReleaseManagedResources
- P:Aspose.PSD.FileFormats.Psd.Layers.LayerGroup.Width
- P:Aspose.PSD.FileFormats.Psd.Layers.LayerGroup.Height
- T:Aspose.PSD.FileFormats.Psd.Layers.AdjustmentLayers.BlackWhiteAdjustmentLayer
- P:Aspose.PSD.FileFormats.Psd.Layers.AdjustmentLayers.BlackWhiteAdjustmentLayer.Reds
- P:Aspose.PSD.FileFormats.Psd.Layers.AdjustmentLayers.BlackWhiteAdjustmentLayer.Yellows
- P:Aspose.PSD.FileFormats.Psd.Layers.AdjustmentLayers.BlackWhiteAdjustmentLayer.Greens
- P:Aspose.PSD.FileFormats.Psd.Layers.AdjustmentLayers.BlackWhiteAdjustmentLayer.Cyans
- P:Aspose.PSD.FileFormats.Psd.Layers.AdjustmentLayers.BlackWhiteAdjustmentLayer.Blues
- P:Aspose.PSD.FileFormats.Psd.Layers.AdjustmentLayers.BlackWhiteAdjustmentLayer.Magentas
- P:Aspose.PSD.FileFormats.Psd.Layers.AdjustmentLayers.BlackWhiteAdjustmentLayer.UseTint
- P:Aspose.PSD.FileFormats.Psd.Layers.AdjustmentLayers.BlackWhiteAdjustmentLayer.BwPresetKind
- P:Aspose.PSD.FileFormats.Psd.Layers.AdjustmentLayers.BlackWhiteAdjustmentLayer.BlackAndWhitePresetFileName
- P:Aspose.PSD.FileFormats.Psd.Layers.AdjustmentLayers.BlackWhiteAdjustmentLayer.TintColor
- P:Aspose.PSD.FileFormats.Psd.Layers.AdjustmentLayers.BlackWhiteAdjustmentLayer.TintColorRed
- P:Aspose.PSD.FileFormats.Psd.Layers.AdjustmentLayers.BlackWhiteAdjustmentLayer.TintColorGreen
- P:Aspose.PSD.FileFormats.Psd.Layers.AdjustmentLayers.BlackWhiteAdjustmentLayer.TintColorBlue
- T:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.BlwhResource
- M:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.BlwhResource.#ctor
- M:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.BlwhResource.Save(Aspose.PSD.StreamContainer,System.Int32)
- F:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.BlwhResource.TypeToolKey
- P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.BlwhResource.Key
- P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.BlwhResource.Length
- P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.BlwhResource.PsdVersion
- P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.BlwhResource.Reds
- P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.BlwhResource.Yellows
- P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.BlwhResource.Greens
- P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.BlwhResource.Cyans
- P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.BlwhResource.Blues
- P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.BlwhResource.Magentas
- P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.BlwhResource.UseTint
- P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.BlwhResource.BwPresetKind
- P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.BlwhResource.BlackAndWhitePresetFileName
- P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.BlwhResource.TintColor
- M:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.Lr16Resource.#ctor
- P:Aspose.PSD.Xmp.Types.Derived.RenditionClass.DefinedValues
- T:Aspose.PSD.AggregateException
- M:Aspose.PSD.CmykColor.Equals(System.Object)
- T:Aspose.PSD.CompositeException
- T:Aspose.PSD.CoreExceptions.IndexOutOFRangeException
- M:Aspose.PSD.CoreExceptions.IndexOutOFRangeException.#ctor(System.String)
- M:Aspose.PSD.CoreExceptions.IndexOutOFRangeException:#ctor(System.String,System.Exception)
- F:Aspose.PSD.FileFormat.Otg
- T:Aspose.PSD.FileFormats.Jpeg2000.Jpeg2000CustomException
- T:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.CurvResource
- M:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.CurvResource.#ctor(System.Int32)
- M:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.CurvResource.#ctor(System.Byte[])
- P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.CurvResource.Key
- P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.CurvResource.Length
- P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.CurvResource.PsdVersion
- P:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.CurvResource.IsDataStoredDiscretely
- M:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.CurvResource.GetChannelData(System.Int32)
- M:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.CurvResource.GetActiveManager
- M:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.CurvResource.Save(Aspose.PSD.StreamContainer,System.Int32)
- M:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.CurvResource.GetCurveManager
- F:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.CurvResource.TypeToolKey
- T:Aspose.PSD.ImageOptions.TiffOptionsUtils
- M:Aspose.PSD.ImageOptions.TiffOptionsUtils.#ctor
- M:Aspose.PSD.ImageOptions.TiffOptionsUtils.GetValidTagsCount(Aspose.PSD.FileFormats.Tiff.TiffDataType[])
- P:Aspose.PSD.ImageOptionsBase.ProgressEventHandler
- P:Aspose.PSD.LoadOptions.ProgressEventHandler
- M:Aspose.PSD.Matrix.#ctor(Aspose.PSD.Matrix)
- M:Aspose.PSD.Metered.Equals(System.Object)
- T:Aspose.PSD.ProgressEventHandler
- T:Aspose.PSD.ProgressManagement.EventType
- F:Aspose.PSD.ProgressManagement.EventType.RelativeProgress
- F:Aspose.PSD.ProgressManagement.EventType.StageChange
- F:Aspose.PSD.ProgressManagement.EventType.Initialization
- F:Aspose.PSD.ProgressManagement.EventType.PreProcessing
- F:Aspose.PSD.ProgressManagement.EventType.Processing
- F:Aspose.PSD.ProgressManagement.EventType.Finalization
- T:Aspose.PSD.ProgressManagement.ProgressEventHandlerInfo
- P:Aspose.PSD.ProgressManagement.ProgressEventHandlerInfo.Description
- P:Aspose.PSD.ProgressManagement.ProgressEventHandlerInfo.EventType
- P:Aspose.PSD.ProgressManagement.ProgressEventHandlerInfo.MaxValue
- P:Aspose.PSD.ProgressManagement.ProgressEventHandlerInfo.Value
- M:Aspose.PSD.RasterImage.GetSkewAngle
- M:Aspose.PSD.RasterImage.NormalizeAngle
- M:Aspose.PSD.RasterImage.NormalizeAngle(System.Boolean,Aspose.PSD.Color)
API Rimosse:
- M:Aspose.PSD.FileFormats.Ai.AiDataSection.Dispose
- P:Aspose.PSD.FileFormats.Ai.AiRasterImageSection.ImageRectangle
- M:Aspose.PSD.FileFormats.Psd.Layers.LayerResources.Lr16Resource.#ctor(System.Int32)
- F:Aspose.PSD.Xmp.Types.Derived.RenditionClass.DefinedValues
Esempi di utilizzo:
PSDNET-206. Miglioramento della capacità di renderizzare testi di diversi colori nel livello di testo
using (var psdImage = (PsdImage)Image.Load("text_ethalon_different_colors.psd")) {
var txtLayer = (TextLayer)psdImage.Layers[1];
txtLayer.TextData.UpdateLayerData();
psdImage.Save("output.png", new PngOptions());
}
PSDNET-369. Supporto della risorsa clbl (Layer resource contains info about Blend clipping elements)
void AssertIsTrue(bool condition, string message) {
if (!condition) {
throw new FormatException(message);
}
}
string sourceFileName = "SampleForResource.psd";
string destinationFileName = "Output" + sourceFileName;
ClblResource GetClblResource(PsdImage im) {
foreach (var layer in im.Layers) {
foreach (var layerResource in layer.Resources) {
if (layerResource is ClblResource) {
return (ClblResource)layerResource;
}
}
}
throw new Exception("La risorsa Clbl specificata non è stata trovata");
}
using (PsdImage im = (PsdImage)Image.Load(sourceFileName)) {
var resource = GetClblResource(im);
AssertIsTrue(resource.BlendClippedElements, "La proprietà ClblResource.BlendClippedElements dovrebbe essere true");
// Test di modifica e salvataggio
resource.BlendClippedElements = false;
im.Save(destinationFileName);
}
using (PsdImage im = (PsdImage)Image.Load(destinationFileName)) {
var resource = GetClblResource(im);
AssertIsTrue(!resource.BlendClippedElements, "La proprietà ClblResource.BlendClippedElements dovrebbe essere diventata false");
}
PSDNET-274. Supporto della risorsa blwh (La risorsa contiene dati del Livello di Regolazione Bianco e Nero)
const string ActualPropertyValueIsWrongMessage = "Il valore di proprietà atteso non è uguale al valore effettivo";
void AssertIsTrue(bool condition, string message) {
if (!condition) {
throw new FormatException(message);
}
}
void ExampleSupportOfBlwhResource(
string sourceFileName,
int reds,
int yellows,
int greens,
int cyans,
int blues,
int magentas,
bool useTint,
int bwPresetKind,
string bwPresetFileName,
double tintColorRed,
double tintColorGreen,
double tintColorBlue,
int tintColor,
int newTintColor
) {
string destinationFileName = "Output" + sourceFileName;
bool isRequiredResourceFound = false;
using (PsdImage im = (PsdImage)Image.Load(sourceFileName)) {
foreach (var layer in im.Layers) {
foreach (var layerResource in layer.Resources) {
if (layerResource is BlwhResource) {
var blwhResource = (BlwhResource)layerResource;
var blwhLayer = (BlackWhiteAdjustmentLayer)layer;
isRequiredResourceFound = true;
AssertIsTrue(blwhResource.Reds == reds, ActualPropertyValueIsWrongMessage);
AssertIsTrue(blwhResource.Yellows == yellows, ActualPropertyValueIsWrongMessage);
AssertIsTrue(blwhResource.Greens == greens, ActualPropertyValueIsWrongMessage);
AssertIsTrue(blwhResource.Cyans == cyans, ActualPropertyValueIsWrongMessage);
AssertIsTrue(blwhResource.Blues == blues, ActualPropertyValueIsWrongMessage);
AssertIsTrue(blwhResource.Magentas == magentas, ActualPropertyValueIsWrongMessage);
AssertIsTrue(blwhResource.UseTint == useTint, ActualPropertyValueIsWrongMessage);
AssertIsTrue(blwhResource.TintColor == tintColor, ActualPropertyValueIsWrongMessage);
AssertIsTrue(blwhResource.BwPresetKind == bwPresetKind, ActualPropertyValueIsWrongMessage);
AssertIsTrue(blwhResource.BlackAndWhitePresetFileName == bwPresetFileName, ActualPropertyValueIsWrongMessage);
AssertIsTrue(Math.Abs(blwhLayer.TintColorRed - tintColorRed) < 1e-6, ActualPropertyValueIsWrongMessage);
AssertIsTrue(Math.Abs(blwhLayer.TintColorGreen - tintColorGreen) < 1e-6, ActualPropertyValueIsWrongMessage);
AssertIsTrue(Math.Abs(blwhLayer.TintColorBlue - tintColorBlue) < 1e-6, ActualPropertyValueIsWrongMessage);
// Test di modifica e salvataggio
blwhResource.Reds = reds - 15;
blwhResource.Yellows = yellows - 15;
blwhResource.Greens = greens + 15;
blwhResource.Cyans = cyans + 15;
blwhResource.Blues = blues - 15;
blwhResource.Magentas = magentas - 15;
blwhResource.UseTint = !useTint;
blwhResource.BwPresetKind = 4;
blwhResource.BlackAndWhitePresetFileName = "bwPresetFileName";
blwhLayer.TintColorRed = tintColorRed - 60;
blwhLayer.TintColorGreen = tintColorGreen - 60;
blwhLayer.TintColorBlue = tintColorBlue - 60;
im.Save(destinationFileName);
break;
}
}
}
}
AssertIsTrue(isRequiredResourceFound, "La risorsa Blwh specificata non è stata trovata");
isRequiredResourceFound = false;
using (PsdImage im = (PsdImage)Image.Load(destinationFileName)) {
foreach (var layer in im.Layers) {
foreach (var layerResource in layer.Resources) {
if (layerResource is BlwhResource) {
var blwhResource = (BlwhResource)layerResource;
var blwhLayer = (BlackWhiteAdjustmentLayer)layer;
isRequiredResourceFound = true;
AssertIsTrue(blwhResource.Reds == reds - 15, ActualPropertyValueIsWrongMessage);
AssertIsTrue(blwhResource.Yellows == yellows - 15, ActualPropertyValueIsWrongMessage);
AssertIsTrue(blwhResource.Greens == greens + 15, ActualPropertyValueIsWrongMessage);
AssertIsTrue(blwhResource.Cyans == cyans + 15, ActualPropertyValueIsWrongMessage);
AssertIsTrue(blwhResource.Blues == blues - 15, ActualPropertyValueIsWrongMessage);
AssertIsTrue(blwhResource.Magentas == magentas - 15, ActualPropertyValueIsWrongMessage);
AssertIsTrue(blwhResource.UseTint == !useTint, ActualPropertyValueIsWrongMessage);
AssertIsTrue(blwhResource.TintColor == newTintColor, ActualPropertyValueIsWrongMessage);
AssertIsTrue(blwhResource.BwPresetKind == 4, ActualPropertyValueIsWrongMessage);
AssertIsTrue(blwhResource.BlackAndWhitePresetFileName == "bwPresetFileName", ActualPropertyValueIsWrongMessage);
AssertIsTrue(Math.Abs(blwhLayer.TintColorRed - tintColorRed + 60) < 1e-6, ActualPropertyValueIsWrongMessage);
AssertIsTrue(Math.Abs(blwhLayer.TintColorGreen - tintColorGreen + 60) < 1e-6, ActualPropertyValueIsWrongMessage);
AssertIsTrue(Math.Abs(blwhLayer.TintColorBlue - tintColorBlue + 60) < 1e-6, ActualPropertyValueIsWrongMessage);
break;
}
}
}
}
AssertIsTrue(isRequiredResourceFound, "La risorsa Blwh specificata non è stata trovata");
}
ExampleSupportOfBlwhResource(
"BlackWhiteAdjustmentLayerStripesMask.psd",
0x28,
0x3c,
0x28,
0x3c,
0x14,
0x50,
false,
1,
"\0",
225.00045776367188,
211.00067138671875,
179.00115966796875,
-1977421,
-5925001);
ExampleSupportOfBlwhResource(
"BlackWhiteAdjustmentLayerStripesMask2.psd",
0x80,
0x40,
0x20,
0x10,
0x08,
0x04,
true,
4,
"\0",
239.996337890625,
127.998046875,
63.9990234375,
-1015744,
-4963324);
Console.WriteLine("L'aggiornamento di BlwhResource funziona come previsto. Premere un tasto.");
PSDNET-230. Possibilità di esportare Gruppo Livelli in Jpeg/Png/Tiff/Gif/Bmp/Jpeg2000/Psd/Psb/Pdf
using (var psdImage = (PsdImage)Image.Load("1.psd")) {
// cartella con sfondo
LayerGroup bg_folder = (LayerGroup)psdImage.Layers[0];
// cartella con contenuto
LayerGroup content_folder = (LayerGroup)psdImage.Layers[4];
bg_folder.Save("sfondo.png", new PngOptions());
content_folder.Save("contenuto.png", new PngOptions());
}
PSDNET-372. Supporto della risorsa lspf (Contiene impostazioni sulle impostazioni di protezione del livello)
const string ActualPropertyValueIsWrongMessage = "Il valore di proprietà atteso non è uguale al valore effettivo";
void AssertIsTrue(bool condition, string message) {
if (!condition) {
throw new FormatException(message);
}
}
string sourceFileName = "CampionePerLaRisorsa.psd";
string destinationFileName = "Output" + sourceFileName;
bool isRequiredResourceFound = false;
using (PsdImage im = (PsdImage)Image.Load(sourceFileName)) {
foreach (var layer in im.Layers) {
foreach (var layerResource in layer.Resources) {
if (layerResource is LspfResource) {
var resource = (LspfResource)layerResource;
isRequiredResourceFound = true;
AssertIsTrue(false == resource.IsCompositeProtected, ActualPropertyValueIsWrongMessage);
AssertIsTrue(false == resource.IsPositionProtected, ActualPropertyValueIsWrongMessage);
AssertIsTrue(false == resource.IsTransparencyProtected, ActualPropertyValueIsWrongMessage);
// Test di modifica e salvataggio
resource.IsCompositeProtected = true;
AssertIsTrue(true == resource.IsCompositeProtected, ActualPropertyValueIsWrongMessage);
AssertIsTrue(false == resource.IsPositionProtected, ActualPropertyValueIsWrongMessage);
AssertIsTrue(false == resource.IsTransparencyProtected, ActualPropertyValueIsWrongMessage);
resource.IsCompositeProtected = false;
resource.IsPositionProtected = true;
AssertIsTrue(false == resource.IsCompositeProtected, ActualPropertyValueIsWrongMessage);
AssertIsTrue(true == resource.IsPositionProtected, ActualPropertyValueIsWrongMessage);
AssertIsTrue(false == resource.IsTransparencyProtected, ActualPropertyValueIsWrongMessage);
resource.IsPositionProtected = false;
resource.IsTransparencyProtected = true;
AssertIsTrue(false == resource.IsCompositeProtected, ActualPropertyValueIsWrongMessage);
AssertIsTrue(false == resource.IsPositionProtected, ActualPropertyValueIsWrongMessage);
AssertIsTrue(true == resource.IsTransparencyProtected, ActualPropertyValueIsWrongMessage);
resource.IsCompositeProtected = true;
resource.IsPositionProtected = true;
resource.IsTransparencyProtected = true;
im.Save(destinationFileName);
break;
}
}
}
}
AssertIsTrue(isRequiredResourceFound, "La risorsa Lspf specificata non è stata trovata");
isRequiredResourceFound = false;
using (PsdImage im = (PsdImage)Image.Load(destinationFileName)) {
foreach (var layer in im.Layers) {
foreach (var layerResource in layer.Resources) {
if (layerResource is LspfResource) {
var resource = (LspfResource)layerResource;
isRequiredResourceFound = true;
AssertIsTrue(resource.IsCompositeProtected, ActualPropertyValueIsWrongMessage);
AssertIsTrue(resource.IsPositionProtected, ActualPropertyValueIsWrongMessage);
AssertIsTrue(resource.IsTransparencyProtected, ActualPropertyValueIsWrongMessage);
break;
}
}
}
}
AssertIsTrue(isRequiredResourceFound, "La risorsa Lspf specificata non è stata trovata");
Console.WriteLine("L'aggiornamento di LspfResource funziona come previsto. Premere un tasto.");
PSDNET-370. Supporto della risorsa infx (Contiene dati relativi al blending degli elementi interni)
void AssertIsTrue(bool condition, string message) {
if (!condition) {
throw new FormatException(message);
}
}
string sourceFileName = "EsempioPerLaRisorsa.psd";
string destinationFileName = "Output" + sourceFileName;
bool isRequiredResourceFound = false;
using (PsdImage im = (PsdImage)Image.Load(sourceFileName)) {
foreach (var layer in im.Layers) {
foreach (var layerResource in layer.Resources) {
if (layerResource is InfxResource) {
var resource = (InfxResource)layerResource;
isRequiredResourceFound = true;
AssertIsTrue(!resource.BlendInteriorElements, "La proprietà InfxResource.BlendInteriorElements dovrebbe essere falsa");
// Test di modifica e salvataggio
resource.BlendInteriorElements = true;
im.Save(destinationFileName);
break;
}
}
}
}
AssertIsTrue(isRequiredResourceFound, "La risorsa Infx specificata non è stata trovata");
isRequiredResourceFound = false;
using (PsdImage im = (PsdImage)Image.Load(destinationFileName)) {
foreach (var layer in im.Layers) {
foreach (var layerResource in layer.Resources) {
if (layerResource is InfxResource) {
var resource = (InfxResource)layerResource;
isRequiredResourceFound = true;
AssertIsTrue(resource.BlendInteriorElements, "La proprietà InfxResource.BlendInteriorElements dovrebbe essere cambiata in vero");
break;
}
}
}
}
AssertIsTrue(isRequiredResourceFound, "La risorsa Infx specificata non è stata trovata");
PSDNET-251. Refactoring di PsdImage e Layer per modificare il comportamento di trasformazione (Ridimensionamento/cambio di rotazione/ritaglio corretto per i mask dei livelli se trasformiamo un livello separatamente)
var enums = (RotateFlipType[])Enum.GetValues(typeof(RotateFlipType));
var fileNames = new string[] {
"UnNormaleEUmAdjustrnentConVettoreEUmMaskDelLivello",
"UnNormaleEUmAdjustrnentConMaskDelLivello",
"LivelloDiTesto",
"FormeCollegateConTesto"
};
foreach (string fileName in fileNames) {
foreach (RotateFlipType rotateFlipType in enums) {
string sourceFileName = fileName + ".psd";
string destinationFileName = fileName + "_" + rotateFlipType;
var psdLoadOptions = new PsdLoadOptions() { LoadEffectsResource = true };
using (PsdImage image = (PsdImage)Image.Load(sourceFileName, psdLoadOptions)) {
image.RotateFlip(rotateFlipType);
image.Save(destinationFileName);
}
}
}
PSDNET-276. In alcune impostazioni di globalizzazione, l’immagine raster AI non può essere aperta
string sourceFileName = "raster_form_8.ai";
System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("ru_RU");
System.Threading.Thread.CurrentThread.CurrentUICulture = System.Threading.Thread.CurrentThread.CurrentCulture;
using (AiImage image = (AiImage)Image.Load(sourceFileName)) {
// non dovrebbero essere generate eccezioni
}
PSDNET-194. Dopo aver eseguito l’operazione FlipRotate su un livello, l’immagine PSD diventa illeggibile
string sourceFileName = OttieniFileNellaCartellaPersonalizzataRelativamenteABase(@"datiTest\Problemi\IMAGINGNET-2617\1.psd");
var flipType = RotateFlipType.Rotate90FlipNone;
var outFileNamePsd = this.GetFileInOutputFolder("TestDiRotazioneFlip2617.psd");
try {
using (PsdImage image = (PsdImage)Image.Load(sourceFileName)) {
for (int i = 0; i < image.Layers.Length; i++) {
var layer = image.Layers[i];
if (!layer.Bounds.IsEmpty) {
layer.RotateFlip(flipType);
}
}
string outFileNamePng = this.GetFileInOutputFolder("TestDiRotalionFlip2617.png");
image.Save(outFileNamePsd);
}
// Qui otteniamo un'eccezione. Anche per PhotoShop questo file è illeggibile,
using (PsdImage image = (PsdImage)Image.Load(outFileNamePsd)) { // Genera un'eccezione
{
// Non fare nulla
}
PSDNET-177. System.ArgumentException durante il caricamento del file PSD
string sourcePath = "1.psd";
string psdPath = "TestDiRotazioneFlip2617.psd";
RotateFlipType flipType = RotateFlipType.Rotate270FlipXY;
using (var im = (PsdImage)(Image.Load(sourcePath))) {
im.RotateFlip(flipType);
im.Save(psdPath);
}
using (var im =(PsdImage)(Image.Load(psdPath))) { // Qui non dovrebbero verificarsi eccezioni
// non fare nulla
}
PSDNET-249. Dopo aver usato un metodo di trasformazione solo per un livello, il livello salvato ha limiti o una maschera incorretti
void AssertIsTrue(bool condition, string message) {
if (!condition) {
throw new FormatException(message);
}
}
const double Tolleranza = 1e-6;
int nuovaLarghezza = 132;
int nuovaAltezza = 247;
double xScale = nuovaLarghezza / 48.0;
double yScale = nuovaAltezza / 19.0;
string sourceFileName = "LivelloDiTesto.psd";
string outputFileName = "LivelloDiTestoResize" + nuovaLarghezza + "_" + nuovaAltezza;
var psdLoadOptions = new PsdLoadOptions() { LoadEffectsResource = true };
using (PsdImage image = (PsdImage) Image.Load(sourceFileName, psdLoadOptions)) {
var layer = image.Layers[1] as TextLayer;
var nuovoSinistro = layer.Sinistro - (nuovaLarghezza - layer.Larghezza) / 2;
var nuovoTop = layer.Top - (nuovaAltezza - layer.Altezza) / 2;
layer.Resize(nuovaLarghezza, nuovaAltezza);
AssertIsTrue(layer.Sinistro == nuovoSinistro, "La proprietà di Sinistro del livello dovrebbe essere " + nuovoSinistro);
AssertIsTrue(layer.Top == nuovoTop, "La proprietà Top del livello dovrebbe essere " + nuovoTop);
AssertIsTrue(layer.Larghezza == nuovaLarghezza, "La proprietà Larghezza del livello dovrebbe essere " + nuovaLarghezza);
AssertIsTrue(layer.Altezza == nuovaAltezza, "La proprietà Altezza del livello dovrebbe essere " + nuovaAltezza);
AssertIsTrue(Math.Abs(layer.MatriceTrasformazione[0] - xScale) <= Tolleranza, "La Matrice di Trasformazione[0] della strato dovrebbe essere " + xScale);
AssertIsTrue(Math.Abs(layer.MatriceTrasformazione[3] - yScale) <= Tolleranza, "La Matrice di Trasformazione[3] del livello dovrebbe essere " + yScale);
AssertIsTrue(Math.Abs(layer.MatriceTrasformazione[4] - nuovoSinistro) <= Tolleranza, "La Matrice di Trasformazione[4] del livello dovrebbe essere " + nuovoSinistro);
AssertIsTrue(Math.Abs(layer.MatriceTrasformazione[5] - nuovoTop) <= Tolleranza, "La Matrice di Trasformazione[5] del livello dovrebbe essere " + nuovoTop);
image.Save(outputFileName + ".psd", new PsdOptions());
image.Save(outputFileName + ".png", new PngOptions() { TipoColore = PngTipoColore.VeroColoreConAlfa });
}