【发布时间】:2015-08-21 21:28:50
【问题描述】:
我正在尝试编写一个简单的照片编辑器,它应该允许用户将各种过滤器应用于所选图像。 如何使用这些过滤器为任何用户操作顺序获得与在 AcdSee、IrfanView 等中相同的结果图像?
byte[] ApplyFilter1(byte[] img, int step)
{
for(int i = 0; i < img.Length; i++)
{
img[i]+=step;//changing brightness
}
return img;
}
byte[] ApplyFilter2(byte[] img, int step)
{
for(int i = 0; i < img.Length; i++)
{
img[i]*=step;//changing whatever
}
return img;
}
//1 situation - user sets filter1 and then filter2
img = ApplyFilter1(img, 10);
img = ApplyFilter2(img, 10);
//2 situation - user sets filter2 and then filter1
img = ApplyFilter2(img, 10);
img = ApplyFilter1(img, 10);
有没有默认的申请顺序? 例如
- 亮度
- 对比度
- 伽玛校正 ...
提前致谢!
【问题讨论】:
-
我强烈怀疑你的前提。您应用图像过滤器的顺序将(并且应该)几乎总是会产生差异。我不知道 AcdSee 但 Photoshop 和其他程序。而且,是的,有一个过滤器总是应该首先应用(根据需要):Gamma 校正首先出现,然后才出现,希望即使那样 Contrast 和 颜色变化和饱和度,也许还有亮度..但我不明白你想要什么:如果用户做事,那么他应该可以随心所欲,不?很好的建议,并希望保留原件以防止最坏的情况发生..
标签: c# image-processing