کلید | خلاصه | دستهبندی |
---|---|---|
PSDNET-68 | پشتیبانی از ویژگی LayerCreationDateTime | ویژگی |
PSDNET-67 | پشتیبانی از رنگ سفید برجسته شیت | ویژگی |
PSDNET-66 | توانایی ادغام لایهها با یکدیگر | ویژگی |
PSDNET-65 | افزودن پشتیبانی جزئی از خصوصیت Text Layer BoundBox | ویژگی |
PSDNET-64 | افزودن پشتیبانی از IopaResource | ویژگی |
PSDNET-56 | پشتیبانی از اثرات لایه برای فرمت PSD | ویژگی |
PSDNET-55 | پشتیبانی از InterruptMonitor برای .Net | ویژگی |
PSDNET-50 | ایجاد امکان تسطیح لایهها | ویژگی |
PSDNET-49 | افزودن تصویرگری خاصیت توان پر کردن در لایهها | ویژگی |
PSDNET-43 | پیادهسازی تصویرگری لایه تنظیم کرنج | ویژگی |
PSDNET-42 | افزودن پشتیبانی از لایه تنظیم کرنج | ویژگی |
PSDNET-41 | پیادهسازی تصویرگری لایه تنظیم سطوح | ویژگی |
PSDNET-40 | افزودن پشتیبانی از لایه تنظیم سطوح | ویژگی |
PSDNET-37 | افزودن پشتیبانی از لایه تنظیم Channel Mixer | ویژگی |
PSDNET-35 | افزودن پشتیبانی از لایه تنظیم Hue/Saturation | ویژگی |
PSDNET-34 | پیادهسازی تصویرگری لایه تنظیم Exposure برای صادرات | ویژگی |
PSDNET-31 | افزودن پشتیبانی از تغییرات برای صادرات لایه تنظیم ChannelMixer | ویژگی |
PSDNET-26 | افزودن پشتیبانی از ماسک Clipping | ویژگی |
PSDNET-13 | افزودن پشتیبانی از ماسک لایه | ویژگی |
PSDNET-9 | افزودن پشتیبانی از لایه تنظیم فیلتر عکس | ویژگی |
PSDNET-8 | افزودن پشتیبانی از لایه تنظیم میکسر کانال | ویژگی |
PSDNET-7 | افزودن پشتیبانی از لایه تنظیم اکسپرژر | ویژگی |
PSDNET-6 | افزودن پشتیبانی از لایه تنظیم روشنایی/کنتراست | ویژگی |
PSDNET-5 | افزودن پشتیبانی جزئی از لایههای تنظیمات | ویژگی |
PSDNET-3 | افزودن پشتیبانی از گزینه متن NoBreak در PSD | ویژگی |
PSDNET-2 | توانایی افزودن لایه متن در زمان اجرا | ویژگی |
PSDNET-62 | کدک TIFF قادر به ذخیره تصویر کانال 16 بیت نیست | بهبود |
PSDNET-61 | ذخیرهکردن تصویر PSD با رنگهای نامعتبر | بهبود |
PSDNET-60 | مختصر کردن گوشه چپ بالای بهروزرسانی را اشتباه محاسبه میکند | بهبود |
PSDNET-59 | استثناء در بهروزرسانی لایههای متن | بهبود |
PSDNET-58 | آشکار کردن خاصیت کدک تصویر JPEG2000 به عموم | بهبود |
PSDNET-57 | اصلاح تنظیمات 24bpp برای صادرات به BMP | بهبود |
PSDNET-46 | لایه تنظیم در تبدیل PSD CMYK به TIFF یا JPG نادیده گرفته شد | بهبود |
مثالهای استفاده:
PSDNET-68 پشتیبانی از خصوصیت LayerCreationDateTime
// مثال استفاده از خصوصیت LayerCreationDateTime
string sourceFileName = "OneLayer.psd";
using (var im = (PsdImage)(Image.Load(sourceFileName)))
{
var layer = im.Layers[0];
var creationDateTime = layer.LayerCreationDateTime;
var expectedDateTime = new DateTime(2018, 7, 17, 8, 57, 24, 769);
Assert.AreEqual(expectedDateTime, creationDateTime);
var now = DateTime.Now;
var createdLayer = im.AddLevelsAdjustmentLayer();
// بررسی اینکه تاریخ ایجاد بهروز شود یا لایههای جدید ایجاد شود
Assert.True(now <= createdLayer.LayerCreationDateTime);
}
PSDNET-67 پشتیبانی از برجستهکردن رنگ شیت
// مثال استفاده از خصوصیت SheetColorHighlight
string sourceFileName = "SheetColorHighlightExample.psd";
string exportPath = "SheetColorHighlightExampleChanged.psd";
using (var im = (PsdImage)(Image.Load(sourceFileName)))
{
var layer1 = im.Layers[0];
Assert.AreEqual(SheetColorHighlightEnum.Violet, layer1.SheetColorHighlight);
var layer2 = im.Layers[1];
Assert.AreEqual(SheetColorHighlightEnum.Orange, layer2.SheetColorHighlight);
layer1.SheetColorHighlight = SheetColorHighlightEnum.Yellow;
im.Save(exportPath);
}
… (سایر مثالها)PSDNET-66 توانایی ادغام لایهها با یکدیگر
// مثال ادغام دو لایه
var sourceFile1 = "FillOpacitySample.psd";
var sourceFile2 = "ThreeRegularLayersSemiTransparent.psd";
var exportPath = "MergedLayersFromTwoDifferentPsd.psd"
using (var im1 = (PsdImage)(Image.Load(sourceFile1)))
{
var layer1 = im1.Layers[1];
using (var im2 = (PsdImage)(Image.Load(sourceFile2)))
{
var layer2 = im2.Layers[0];
layer1.MergeLayerTo(layer2);
im2.Save(exportPath);
}
}
PSDNET-65 افزودن پشتیبانی جزئی از خصوصیت Text Layer BoundBox
// مثال باکسهای Text
string sourceFileName = "LayerWithText.psd";
var correctOpticalSize = new Size(127, 45);
var correctBoundBox = new Size(172, 62);
using (var im = (PsdImage)(Image.Load(sourceFileName)))
{
var textLayer = (TextLayer)im.Layers[1];
// اندازه لایه، اندازه منطقی استاندارد برای کادر تصویر
var opticalSize = textLayer.Size;
Assert.AreEqual(correctOpticalSize, opticalSize);
// یک TextBoundBox است که مساحت بیشتری برای Text Layer است
var boundBox = textLayer.TextBoundBox;
Assert.AreEqual(correctBoundBox, boundBox);
}
PSDNET-64 افزودن پشتیبانی از IopaResource
// تغییر مشخصات Opacity توسط تغییر IopaResource
string sourceFileName = "FillOpacitySample.psd";
string exportPath = "FillOpacitySampleChanged.psd";
using (var im = (PsdImage)(Image.Load(sourceFileName)))
{
var layer = im.Layers[2];
var resources = layer.Resources;
foreach (var resource in resources)
{
if (resource is IopaResource)
{
var iopaResource = (IopaResource)resource;
iopaResource.FillOpacity = 200;
}
}
im.Save(exportPath);
}
PSDNET-56 پشتیبانی از اثرات لایه برای فرمت PSD
using (
PsdImage image =
(PsdImage)
Aspose.PSD.Image.Load(
sourceFileName,
new Aspose.PSD.ImageLoadOptions.PsdLoadOptions()
{
LoadEffectsResource = true,
UseDiskForLoadEffectsResource = true
}))
{
image.Save(
output,
new Aspose.PSD.ImageOptions.PngOptions()
{
ColorType =
Aspose.PSD.FileFormats.Png
.PngColorType
.TruecolorWithAlpha
});
}
PSDNET-55 پشتیبانی از Monitor وقفه برای .Net
public void InterruptMonitorTest(string dir, string ouputDir)
{
ImageOptionsBase saveOptions = new ImageOptions.PngOptions();
Multithreading.InterruptMonitor monitor = new Multithreading.InterruptMonitor();
SaveImageWorker worker = new SaveImageWorker(dir + "big.psb", dir + "big_out.png", saveOptions, monitor);
System.Threading.Thread thread = new System.Threading.Thread(new System.Threading.ThreadStart(worker.ThreadProc));
try
{
thread.Start();
// تاخیر شود که کمتر از زمان مورد نیاز برای تبدیل تصویر کامل
System.Threading.Thread.Sleep(3000);
// وقفه را فراهم کنید
monitor.Interrupt();
System.Console.WriteLine("در حال وقفه نخ دفعه #{0} در {1}", thread.ManagedThreadId, System.DateTime.Now);
// منتظر وقفه باشید...
thread.Join();
}
finally
{
// اگر پرونده قابل حذف نباشد، هیچ استثناءی پرتاب نمیشود.
System.IO.File.Delete(dir + "big_out.png");
}
}
/// <summary>
/// آغاز کردن تبدیل تصویر و منتظر وقفه آن.
/// </summary>
private class SaveImageWorker
{
/// <summary>
/// مسیر به تصویر ورودی.
/// </summary>
private readonly string inputPath;
/// <summary>
/// مسیر به تصویر خروجی.
/// </summary>
private readonly string outputPath;
/// <summary>
/// وقفه نگهبان.
/// </summary>
private readonly Multithreading.InterruptMonitor monitor;
/// <summary>
/// گزینههای ذخیره.
/// </summary>
private readonly ImageOptionsBase saveOptions;
/// <summary>
/// یک نمونه جدید از کلاس <see cref="SaveImageWorker" /> را مقدماتی میکند.
/// </summary>
/// <param name="inputPath">مسیر به تصویر ورودی.</param>
/// <param name="outputPath">مسیر به تصویر خروجی.</param>
/// <param name="saveOptions">گزینههای ذخیره.</param>
/// <param name="monitor">وقفه نگهبان.</param>
public SaveImageWorker(string inputPath, string outputPath, ImageOptionsBase saveOptions, Multithreading.InterruptMonitor monitor)
{
this.inputPath = inputPath;
this.outputPath = outputPath;
this.saveOptions = saveOptions;
this.monitor = monitor;
}
public void ThreadProc()
{
using (Image image = Image.Load(this.inputPath))
{
Multithreading.InterruptMonitor.ThreadLocalInstance = this.monitor;
try
{
image.Save(this.outputPath, this.saveOptions);
Assert.Fail("وقفه مورد انتظار است.");
}
catch (CoreExceptions.OperationInterruptedException e)
{
System.Console.WriteLine("نخ ذخیره دفعه #{0} پایان مییابد در {1}", System.Threading.Thread.CurrentThread.ManagedThreadId, System.DateTime.Now);
System.Console.WriteLine(e);
}
catch (System.Exception e)
{
System.Console.WriteLine(e);
}
finally
{
Multithreading.InterruptMonitor.ThreadLocalInstance = null;
}
}
}
}