是否可以在.NET中平方并导出这样的JPEG图像(没有第三方工具)?
方法是扩展画布(作为白色遮罩),同时保持图像居中并扩展画布的短尺寸,即
如果宽度为300且高度为480,则将画布宽度扩展为480。
ps = new Photoshop.Application();
ps.Preferences.RulerUnits = PsUnits.psPixels;
Console.WriteLine(f.FullName);
ps.Open(f.FullName);
// unlock background to allow canvas resizing
ps.ActiveDocument.ActiveLayer.name = "From Background";
ps.ActiveDocument.ChangeMode(PsChangeMode.psConvertToRGB);
// resize canvas to square
double width = ps.ActiveDocument.Width;
double height = ps.ActiveDocument.Height;
if (width > height)
{
ps.ActiveDocument.ResizeCanvas(width, width,
PsAnchorPosition.psMiddleCenter);
}
else if (width < height)
{
ps.ActiveDocument.ResizeCanvas(height, height,
PsAnchorPosition.psMiddleCenter);
}
在此之前/之后我在后图像中使用了灰色背景,因此很容易看到,但我会在生产中使用白色遮罩。