我有一個圖像在圖像視圖內。我想要在圖像中找到特定像素的顏色(比如x = 10,y = 20)。工作代碼真的會幫助我。如何找出圖像中的「特定像素的顏色」?
0
A
回答
1
這取決於圖像:)
的類型非常如果你有字節的數據,你知道它是如何安排,例如PNG使用RGBA那麼你已經有了一條腿。
自由使用像CGImageGetBitsPerComponent和CGImageGetColorSpace這樣的所有CGImageFunctions將成爲您的指南。
獲得實際的字節數據,CGImageDestinationCreateWithData創建一個寫入到一個核心基礎可變數據對象(NSMutableData */CFMutableDataRef)
如果這一切都是亂碼圖像的目的地,開始與Quart2D Programming Guide。
0
這裏是非常簡單的類的sceleton與圖像作爲位圖一起工作。 當創建具有
ImageBitmap * imageBitmap = [[ImageBitmap alloc] initWithImage:myImageView.image bitmapInfo:kCGImageAlphaNoneSkipLast];
這個對象可以在(X,Y) 作爲
Byte * pixel = [imageBitmap pixelAtX:x Y:y];
RGB分量在0,1,2字節所以
Byte red = pixel[0]; etc.
訪問任何像素
您可以讀取或寫入像素,例如設置從像素中移除綠色分量:
pixel[1] = 0;
如果使用kCGImageAlphaPremultipliedLast像素[3]是α-
//ImageBitmap.h
@interface ImageBitmap : NSObject {
int height, width;
void * contextData;
CGContextRef context;
CGBitmapInfo bitmapInfo;
}
@property(assign) int height;
@property(assign) int width;
@property(readonly) CGContextRef context;
@property(readonly) void * contextData;
-(id)initWithSize:(CGSize)size bitmapInfo:(CGBitmapInfo)bmInfo;
-(id)initWithImage:(UIImage *)image bitmapInfo:(CGBitmapInfo)bmInfo;
-(CGContextRef)createBitmapContextWithData:(void *)data;
- (UIImage *)imageFromContext;
-(Byte *)pixelAtX:(NSInteger)pixelX Y:(NSInteger)pixelY;
//ImageBitmap.m
#import "ImageBitmap.h"
@implementation ImageBitmap
@synthesize width, height;
@synthesize context, contextData;
-(id)initWithSize:(CGSize)size bitmapInfo:(CGBitmapInfo)bmInfo{
if (self = [super init]) {
height = size.height;
width = size.width;
contextData = malloc(width * height * 4);
bitmapInfo = bmInfo;
context = [self createBitmapContextWithData:contextData];
}
return self;
}
-(id)initWithImage:(UIImage *)image bitmapInfo:(CGBitmapInfo)bmInfo{
[self initWithSize:image.size bitmapInfo:bmInfo];
CGContextDrawImage(context, CGRectMake(0, 0, width, height),image.CGImage);
return self;
}
-(CGContextRef) createBitmapContextWithData:(void *)data{
CGContextRef ctx = NULL;
int bitmapBytesPerRow = (width * 4);
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
if (data == NULL){
return NULL;
}
ctx = CGBitmapContextCreate (data,
width,
height,
8, // bits per component
bitmapBytesPerRow,
colorSpace,
bitmapInfo); //kCGImageAlphaNoneSkipLast or kCGImageAlphaPremultipliedLast
CGColorSpaceRelease(colorSpace);
return ctx;
}
- (UIImage *)imageFromContext{
CGImageRef cgImage = CGBitmapContextCreateImage(context);
return [UIImage imageWithCGImage:cgImage];
}
-(Byte *)pixelAtX:(NSInteger)pixelX Y:(NSInteger)pixelY{
return (Byte *)contextData + (width * pixelY + pixelX)*4;
}
@end
相關問題
- 1. 如何查找圖像中特定顏色的像素數量?
- 2. 如何在圖像中查找特定座標中的像素顏色?
- 3. 如何從圖片框中獲取特定像素的顏色?
- 4. 在java中掃描某個特定像素顏色的圖像
- 5. 替換圖像中的特定顏色像素
- 6. 找出圖像中唯一的顏色?
- 7. 更改圖像中的特定顏色
- 8. 如何在運動圖像中找到JPanel內給定點的像素顏色?
- 9. 查找給定RGB顏色的像素
- 10. 如何獲取圖像中像素的顏色(加載灰色)?
- 11. C++,如何加載圖像和計數的特定顏色的像素
- 12. HLSL像素着色器 - 更改特定色相的圖像顏色
- 13. 如何讀取XNA中特定像素的顏色?
- 14. 如何在CCSprite中獲取特定像素的RGBA顏色
- 15. 如何在Rails中選擇特定像素的顏色?
- 16. 如何將圖像分成塊並找到像素顏色
- 17. 刪除圖像中的所有特定顏色(顏色範圍)?
- 18. 用另一種顏色替換圖像中的特定顏色
- 19. 查找像素顏色
- 20. WPF圖像,改變像素的顏色
- 21. 讀取圖像的像素顏色
- 22. 查找UIImageView上特定像素的顏色
- 23. 在特定位置找到cv :: Mat的像素顏色
- 24. 從圖像中獲取像素顏色
- 25. 滑出圖像的顏色
- 26. 如何從圖像中獲取像素的顏色?
- 27. 如何在C#.NET中更改圖像的像素顏色
- 28. 如何設置QImage的像素顏色爲RGB888圖像Qt中
- 29. 如何更改圖像中的特定顏色?
- 30. 如何在java中掃描特定顏色/圖像的屏幕?
見[這個問題](http://stackoverflow.com/questions/3142178/nsbitmapimagerep-for-iphone-or-direct-pixel-access - 用於-cgimage/3142338#3142338) – drawnonward 2010-07-03 17:21:46