簡體   English   中英

UIImage / char解釋的像素

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM