为啥 MacBook Pro 可以迅速反转屏幕的颜色
对于您给的那张图片的大小,反转像素操作本身是很快的(大约在若干或几十个毫秒的量级)。您的图片大小是1280x1920像素,每个点RGB的话是1280x1920x3=不到8M字节。反色运算每个字节做一下减法而已,顶多一个cpu cycle(大约1ns)。现代内存的连续读写带宽一般都是若干GB/s。所以总用时基本不会超过0.1秒。Mac的操作,也许只是改了一个显卡渲染部分的一个寄存器,而显示buffer里的内容一点都没动,于是实际渲染到屏幕的时候就都瞬间反色了(只需要显卡寄存器读写时间)。但即便是把显示buffer里每个点都改一遍,不用GPU,只用CPU,顶多几十个毫秒,一般人也不会有什么感觉。GIMP慢的原因:首先,为了可靠性,恐怕GIMP所有操作都要读写到硬盘上,这样程序crash了好能恢复,这就比内存至少慢大概10-100倍。另外GIMP还要做好多其他的事情,比如记录历史操作(好让你可以用Ctrl-Z),更新很多统计数据(估算图片输出后的大小,当前图片的色温亮度,灰度曲线,等等等等),如果图像是某种压缩格式,可能还要算一遍最优的调色板配置。所以加在一起用时就多一些了。
■网友
没有原图,我只是用了你这张图像,自己写了个反色程序。用的是C#,使用Framework里Bitmap的GetPixel和SetPixel函数,中间还用了一个多余的变量。通过遍历整张图像算出每个像素再写回去。这应该是最慢的算法了,没有任何优化。处理整张图像需要不到2秒的时间。不知道GIMP用的是什么方法,不过应该不会比这个慢吧。其实也都是要运算的。不过你如果全屏幕反色的话相当于把整个显卡输出的内容全反了。这个要比单纯用GIMP处理一个屏幕那么大的图像快得多。另外,进行比较的时候你应该用PhotoShop和GIMP对比,比较的时候至少要保证是同种东西吧。更新:由于反色相当于把RGB分量都做一次减法。比如原始红色分量R,反色后就是255-R。如果数据以8位二进制存储的话,无符号整数范围就是0-255 。这个操作就相当于全部数据按位取反,这在计算机里面是最基本而且速度最快的运算之一。之所以全屏反色非常快,是因为他要处理的情况相比单纯图像处理来说非常简单。这种运算方式如果系统支持那么都是非常非常快的。
■网友
难道就没有人发现图片的奥秘么,自己翻转过来有福利
■网友
应该是改变了显示描述文件,所以不需要运算。你可以试试在反转颜色下截图,发出去还是正常颜色的图。
■网友
这种操作非常简单,运算量不大,用显卡应该可以很快。记得compiz也有这个功能,楼主可以找代码看看。
■网友
这个是苹果系统为了方便视障人士设计的功能,从iOS到Mac都有,目的为了看清楚屏幕内容。应该是底层设计时就考虑好的。
推荐阅读
- 为啥看到书柜上的藏书会有心旷神怡的感觉
- 汽车知识|第八代高尔夫到底值不值得买?1.4T自动Pro版全款多少钱?
- 为啥知乎上普便有一种【我在北上广深打工,所以拥有更好的视野】这样的错觉
- 为啥工商银行的用户体验如此之差
- 汽车|看了中消协4S店服务测评调查结果,终于知道法系车为啥卖不好了
- 你为啥从窝窝商城离职?
- 为啥5G和2.4G默认的BSSID是相同的
- 为啥电器实体店的价格比淘宝贵那么多
- 现在在线学习视频有很多了,为啥大部分人还是喜欢下载下来观看
- 为啥到现在你还没有女朋友 ?
