由于目前印兔项目中的在线设计功能设计出来的产品颜色模式不确定,但是客户设计出来的产品需要发送到印厂的客户端去下载并且印刷,只有CMYK颜色模式的产品才能正确印刷,所以需要判断产品的颜色模式是否为CMYK,如果不是就将产品的颜色模式转为CMYK模式。
首先需判断目前产品的颜色模式
1 Image img = Bitmap.FromFile("图片路径", true); 2 3 PixelFormat pf = (PixelFormat)img.PixelFormat; 4 if (pf.ToString() == "8207") 5 { 6 MessageBox.Show("图片是CMYK模式!"); 7 }
因为img.PixelFormat的返回值为Format8bppIndexed 灰度模式,在遇到RGB等其他颜色模式时返回“Format24bppRgb”,但是在遇到CMYK模式的图片是返回“8207”
我刚开始以为还要算法,因为CMYK转RGB有对应的算法,但是没有找到RGB转CMYK的算法,所以就想把CMYK转RGB的公式反推回去,结果被安排了 /笑哭 (算法啥的本人都没接触过,有啥不对的大家就喷吧 /阴险)
后来找到了对应的RGB转CMYK的算法
c'=255-r; m'=255-g; y'=255-b; k=min(c',m',y'); c=c'-k; m=m'-k; y=y'-k; R‘ =R/255