今天遇到一個(gè)奇怪的問題:服務(wù)器返回的某一張圖片,明明是JPG的形式馍刮,但是就是顯示不出來信夫,而其他的圖片(路徑相識(shí),格式一樣 )都能正常的顯示出來。并且控制臺(tái)輸出如下錯(cuò)誤:
<Error>: CGBitmapContextCreate: unsupported parameter combination: set CGBITMAP_CONTEXT_LOG_ERRORS environmental variable to see the details
<Error>: CGContextDrawImage: invalid context 0x0. If you want to see the backtrace, please set CG_CONTEXT_SHOW_BACKTRACE environmental variable.
<Error>: CGBitmapContextCreateImage: invalid context 0x0. If you want to see the backtrace, please set CG_CONTEXT_SHOW_BACKTRACE environmental variable.
比較好的是:程序能正常運(yùn)行静稻,不會(huì)閃退警没,只是圖片不能正常顯示而已。
問題分析:
同樣是JPG格式的圖片振湾,怎么看都是一樣的杀迹。可有的圖片就是顯示不出來押搪。
其實(shí)圖片的顏色空間是分RGB與CMKY等不同模式的树酪。如果JPG的顏色空間為CMKY,圖片就顯示不出來大州,并且控制臺(tái)會(huì)輸出上訴信息续语。
解決方法:
通過上面的分析也就知道怎么改了。就是將圖片的顏色空間改成RGB的厦画。怎么改能呢疮茄?用Photoshop重新導(dǎo)出成RGB格式的就行了。
關(guān)于顏色空間的補(bǔ)充:
顏色空間格式還有CIE色度模型苛白、HSI顏色空間娃豹、YUV(Lab)顏色空間 等
1、RGB顏色空間:計(jì)算機(jī)顏色顯示器顯示顏色的原理與彩色電視機(jī)一樣购裙,都是采用R懂版、G、B相加混色的原理躏率,通過發(fā)射出三種不同強(qiáng)度的電子束躯畴,使屏幕內(nèi)側(cè)覆蓋的紅、綠薇芝、藍(lán)磷光材料發(fā)光而產(chǎn)生顏色的蓬抄。在多媒體計(jì)算機(jī)技術(shù)中,用得最多的是RGB顏色空間夯到。
2嚷缭、CMY顏色空間 :彩色印刷或彩色打印的紙張是不能發(fā)射光線的,因而印刷機(jī)或彩色打印機(jī)就只能使用一些能夠吸收特定的光波而反射其他光波的油墨或顏料耍贾。油墨或顏料的3基色是青(Cyan)阅爽、品紅(Magenta)和黃(Yellow),簡(jiǎn)稱為CMY荐开。
3付翁、CIE色度模型:國(guó)際照明委員會(huì)(CIE,Commission Internationale de L'Eclairage / International Commission on Illumination)的色度模型是最早使用的模型之一晃听。它是三維模型百侧,其中砰识,x和y兩維定義顏色,第3維定義亮度佣渴。
4辫狼、HSI顏色空間:HSI(Hue,Saturation and Intensity)顏色空間是從人的視覺系統(tǒng)出發(fā)观话,用色調(diào)(Hue)予借、色飽和度(Saturation或Chroma)和亮度(Intensity或Brightness)來描述顏色。
5频蛔、YUV(Lab)顏色空間:在現(xiàn)代彩色電視系統(tǒng)中灵迫,通常采用三管彩色攝像機(jī)或彩色CCD(電耦合器件)攝像機(jī),它把得到的彩色圖像信號(hào)晦溪,經(jīng)分色瀑粥、分別放大校正得到RGB,再經(jīng)過矩陣變換電路得到亮度信號(hào)Y和兩個(gè)色差信號(hào)R-Y三圆、B-Y狞换,最后發(fā)送端將亮度和色差三個(gè)信號(hào)分別進(jìn)行編碼,用同一信道發(fā)送出去舟肉。這就是我們常用的YUV顏色空間修噪。