首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取像素颜色的快速方法?

获取像素颜色的快速方法?
EN

Stack Overflow用户
提问于 2013-11-20 23:19:40
回答 1查看 1.7K关注 0票数 1

我正在使用c#开发一个Photoshop插件(使用对象库)。我正在尝试循环遍历活动文档中的所有像素,但是使用我目前拥有的代码,甚至需要很长时间才能遍历256x256文件中的1行像素。我想知道是否有一种比使用ColorSampler更好(更快)的方法?(c++插件?)

这就是我目前拥有的:(http://forums.adobe.com/thread/290211) (与此代码等效的C#)

代码语言:javascript
复制
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();
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-11-21 03:08:23

我以前没有使用过这个API,但是我找到了这个网站:CS5对象库

我做了一些查找,并且有一个SaveAs方法可以用于Document对象。您可以使用此方法将文档保存为图像(例如位图)。

从那里,您可以使用几个来源在线显示如何快速提取像素信息从BMP。

下面是一篇特别的文章:在C#中更快地处理位图

我意识到我并没有为您提供可供您使用的复制/可压缩代码,但我希望这能为您指明正确的方向。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20109220

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档