我正在使用c#(使用Adobe Photoshop Object Library)制作Photoshop插件。我正在尝试遍历活动文档中的所有像素,但是使用我目前所拥有的代码,甚至需要花费很长时间来浏览256x256文件中的1行像素。我想知道是否有比使用ColorSampler更好(更快)的方式? (c ++插件?)
这就是我目前所拥有的: (http://forums.adobe.com/thread/290211) (C# Equivalent to this code)
static void Main(string[] args)
{
ps.Application app = new ps.Application();
app.Preferences.RulerUnits = ps.PsUnits.psPixels;
ps.Document activeDoc = app.ActiveDocument;
double docWidth = activeDoc.Width;
double docHeight = activeDoc.Height;
double xPos = 0.0D;
double yPos = 0.0D;
activeDoc.ColorSamplers.RemoveAll();
var pixelLoc = new object[] { 0.0D, 0.0D };
ps.ColorSampler myColorSampler = activeDoc.ColorSamplers.Add(pixelLoc);
var stopwatch = Stopwatch.StartNew();
ps.SolidColor myColor;
double red;
double green;
double blue;
for (xPos = 0.0D; xPos <=docWidth - 1; xPos++)
{
myColor = myColorSampler.Color;
red = myColor.RGB.Red;
green = myColor.RGB.Green;
blue = myColor.RGB.Blue;
pixelLoc[0] = xPos;
myColorSampler.Move(pixelLoc);
}
Console.WriteLine(stopwatch.ElapsedMilliseconds); //11000 ms for 1 row of 256 pixels
Console.ReadLine();
}
答案 0 :(得分:3)
之前我没有使用此API,但我找到了这个网站:Adobe Photoshop CS5 Object Library。
我做了一些查找,并且有一个可以在Document对象上使用的SaveAs方法。您可以使用此方法将文档另存为图像(假设为BITMAP)。
从那里,您可以在线使用多个来源,展示如何从BMP中快速提取像素信息。
以下是一篇特别文章:Work with Bitmaps faster in C#
我意识到我没有提供复制/可粘贴代码供您使用,但我希望这能指出您正确的方向。