[英]Pixels of UIImage / char interpretation
以下代碼將jpg轉換為字符串。
CGImageRef imageRef = example.CGImage;
NSData *data = (NSData *) CGDataProviderCopyData(CGImageGetDataProvider(imageRef));
char *pixels = (char *)[data bytes];
一小部分輸出是:
"GJYˇKO[ˇFJSˇILQˇKNSˇKKSˇOOYˇMMYˇNNVˇOOWˇOOWˇNNVˇLLTˇKKSˇMMUˇOOWˇJMT"
我想3個符號一起由一個像素的信息組成,對嗎?
如果這是真的,我怎么能解釋這個符號(例如顏色)?
這將取決於圖像的色彩空間。 如果有一個alpha通道4個char
將是一個像素,沒有它將是3個char
。 如果它是RGBA
則G是你的R
,J是你的G
,Y是你的B
,是你的A
如果它是ARGB
那么G就是你的A
等。當你將像素轉換為char *時,記住跟蹤長度,因為任何RGBA值為0都會導致空終止。
你不能打印出那樣的位圖。 正如@Joe所說,char是各個顏色組件,但任何零都會終止字符串,並且還有很多其他問題試圖從NSData中打印字節。
假設RGBA顏色空間,我接近它的方式是這樣的;
struct {
char red;
char green;
char blue;
char alpha;
} color;
color *bitmap = (color *)[data bytes];
for(int i = 0;i < [data length] / sizeof(color);i++) {
NSLog(@"%d, %d, %d, %d", colors[i].red, colors[i].green, colors[i].blue, colors[i].alpha);
}
如果您的圖像不在RGBA顏色空間中,則需要調整顏色結構以匹配它。
此外,這段代碼沒有編譯,但從我的腦海中輸入到這篇文章。 沒有承諾它不會重新格式化您的硬盤驅動器。 請在復制和粘貼之前考慮一下。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.