亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何獲取iphone上圖像上像素的RGB值

如何獲取iphone上圖像上像素的RGB值

慕尼黑5688855 2019-07-29 16:16:18
如何獲取iphone上圖像上像素的RGB值我正在編寫一個iPhone應用程序,并且需要在photoshop中實現與“eyedropper”工具相當的東西,在那里你可以觸摸圖像上的一個點并捕獲相關像素的RGB值,以確定和匹配它的顏色。獲取UIImage是一個簡單的部分,但有沒有辦法將UIImage數據轉換為位圖表示,我可以在其中提取給定像素的信息?一個工作代碼示例將是最受歡迎的,并注意我不關心alpha值。
查看完整描述

3 回答

?
子衿沉夜

TA貢獻1828條經驗 獲得超3個贊

這是我對UIImage采樣顏色的解決方案。

此方法將請求的像素渲染為1px大型RGBA緩沖區,并將生成的顏色值作為UIColor對象返回。這比我見過的大多數其他方法快得多,并且只使用很少的內存。

對于像顏色選擇器這樣的東西,它應該可以很好地工作,在任何給定的時間你通常只需要一個特定像素的值。

的UIImage + Picker.h

#import <UIKit/UIKit.h>@interface UIImage (Picker)- (UIColor *)colorAtPosition:(CGPoint)position;@end

的UIImage + Picker.m

#import "UIImage+Picker.h"@implementation UIImage (Picker)- (UIColor *)colorAtPosition:(CGPoint)position {

    CGRect sourceRect = CGRectMake(position.x, position.y, 1.f, 1.f);
    CGImageRef imageRef = CGImageCreateWithImageInRect(self.CGImage, sourceRect);

    CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
    unsigned char *buffer = malloc(4);
    CGBitmapInfo bitmapInfo = kCGImageAlphaPremultipliedLast | kCGBitmapByteOrder32Big;
    CGContextRef context = CGBitmapContextCreate(buffer, 1, 1, 8, 4, colorSpace, bitmapInfo);
    CGColorSpaceRelease(colorSpace);
    CGContextDrawImage(context, CGRectMake(0.f, 0.f, 1.f, 1.f), imageRef);
    CGImageRelease(imageRef);
    CGContextRelease(context);

    CGFloat r = buffer[0] / 255.f;
    CGFloat g = buffer[1] / 255.f;
    CGFloat b = buffer[2] / 255.f;
    CGFloat a = buffer[3] / 255.f;

    free(buffer);

    return [UIColor colorWithRed:r green:g blue:b alpha:a];}@end


查看完整回答
反對 回復 2019-07-29
?
慕村9548890

TA貢獻1884條經驗 獲得超4個贊

您無法直接訪問UIImage的位圖數據。

您需要獲取UIImage的CGImage表示。然后從位圖的CFData表示中獲取CGImage的數據提供程序。確保在完成后釋放CFData。

CGImageRef cgImage = [image CGImage];CGDataProviderRef provider = CGImageGetDataProvider(cgImage);CFDataRef bitmapData = CGDataProviderCopyData(provider);

您可能希望查看CGImage的位圖信息以獲取像素順序,圖像尺寸等。


查看完整回答
反對 回復 2019-07-29
  • 3 回答
  • 0 關注
  • 1121 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號