Ios 将图像转换为CGBitmapContext

Ios 将图像转换为CGBitmapContext,ios,objective-c,image,Ios,Objective C,Image,我对objective C比较陌生,可以将png图像转换为CGBitmapContext。如果是,我如何实施它 虽然无法从UIImage获得像素值,但可以通过UIImage的CGImage访问像素值。看看这篇文章中提供的信息。 它使用onTouch方法获取用户手指所在的特定x和y坐标处的RGB值。虽然无法从UIImage获得像素值,但可以通过UIImage的CGImage访问。看看这篇文章中提供的信息。 它使用onTouch方法获取用户手指所在的特定x和y坐标处的RGB值。虽然无法从UIImag

我对objective C比较陌生,可以将png图像转换为CGBitmapContext。如果是,我如何实施它

虽然无法从UIImage获得像素值,但可以通过UIImage的CGImage访问像素值。看看这篇文章中提供的信息。
它使用
onTouch
方法获取用户手指所在的特定x和y坐标处的RGB值。

虽然无法从UIImage获得像素值,但可以通过UIImage的CGImage访问。看看这篇文章中提供的信息。
它使用
onTouch
方法获取用户手指所在的特定x和y坐标处的RGB值。

虽然无法从UIImage获得像素值,但可以通过UIImage的CGImage访问。看看这篇文章中提供的信息。
它使用
onTouch
方法获取用户手指所在的特定x和y坐标处的RGB值。

虽然无法从UIImage获得像素值,但可以通过UIImage的CGImage访问。看看这篇文章中提供的信息。
它使用
onTouch
方法获取用户手指所在的特定x和y坐标处的RGB值。

这就是我找到的解决方案

- (IBAction)handlePans:(UIPanGestureRecognizer *)event{
if (event.numberOfTouches==1){

tranx = [event locationInView:self].x;
trany = [event locationInView:self].y;

CGPoint vel = [event velocityInView:self];
    velocityx = vel.x;
    velocityy = vel.y;

// NSLog(@"x: %d y:%d", tranx,trany);
//NSLog(@"velocity x - %f", vel.x);
//NSLog(@"velocity y - %f", vel.y);

_imageselct = [UIImage imageNamed:@"GASOLINE.png"];
CFDataRef pixelData =  CGDataProviderCopyData(CGImageGetDataProvider(_imageselct.CGImage));
const UInt8* data = CFDataGetBytePtr(pixelData);
int pixelInfo = ((workingImage.size.width  * trany) + tranx ) * 4;
float red = data[pixelInfo];
float green = data[(pixelInfo+1)];
float blue = data[pixelInfo + 2];
float alpha = data[pixelInfo + 3];
CFRelease(pixelData);
UIColor* color = [UIColor colorWithRed:red/255.0f green:green/255.0f blue:blue/255.0f alpha:alpha/255.0f];

if ([color getRed:&red green: &green blue: &blue alpha: &alpha]){

    NSLog(@"r: %f g: %f b: %f a: %f", red, green, blue, alpha);



}

}
}

这就是我找到的解决办法

- (IBAction)handlePans:(UIPanGestureRecognizer *)event{
if (event.numberOfTouches==1){

tranx = [event locationInView:self].x;
trany = [event locationInView:self].y;

CGPoint vel = [event velocityInView:self];
    velocityx = vel.x;
    velocityy = vel.y;

// NSLog(@"x: %d y:%d", tranx,trany);
//NSLog(@"velocity x - %f", vel.x);
//NSLog(@"velocity y - %f", vel.y);

_imageselct = [UIImage imageNamed:@"GASOLINE.png"];
CFDataRef pixelData =  CGDataProviderCopyData(CGImageGetDataProvider(_imageselct.CGImage));
const UInt8* data = CFDataGetBytePtr(pixelData);
int pixelInfo = ((workingImage.size.width  * trany) + tranx ) * 4;
float red = data[pixelInfo];
float green = data[(pixelInfo+1)];
float blue = data[pixelInfo + 2];
float alpha = data[pixelInfo + 3];
CFRelease(pixelData);
UIColor* color = [UIColor colorWithRed:red/255.0f green:green/255.0f blue:blue/255.0f alpha:alpha/255.0f];

if ([color getRed:&red green: &green blue: &blue alpha: &alpha]){

    NSLog(@"r: %f g: %f b: %f a: %f", red, green, blue, alpha);



}

}
}

这就是我找到的解决办法

- (IBAction)handlePans:(UIPanGestureRecognizer *)event{
if (event.numberOfTouches==1){

tranx = [event locationInView:self].x;
trany = [event locationInView:self].y;

CGPoint vel = [event velocityInView:self];
    velocityx = vel.x;
    velocityy = vel.y;

// NSLog(@"x: %d y:%d", tranx,trany);
//NSLog(@"velocity x - %f", vel.x);
//NSLog(@"velocity y - %f", vel.y);

_imageselct = [UIImage imageNamed:@"GASOLINE.png"];
CFDataRef pixelData =  CGDataProviderCopyData(CGImageGetDataProvider(_imageselct.CGImage));
const UInt8* data = CFDataGetBytePtr(pixelData);
int pixelInfo = ((workingImage.size.width  * trany) + tranx ) * 4;
float red = data[pixelInfo];
float green = data[(pixelInfo+1)];
float blue = data[pixelInfo + 2];
float alpha = data[pixelInfo + 3];
CFRelease(pixelData);
UIColor* color = [UIColor colorWithRed:red/255.0f green:green/255.0f blue:blue/255.0f alpha:alpha/255.0f];

if ([color getRed:&red green: &green blue: &blue alpha: &alpha]){

    NSLog(@"r: %f g: %f b: %f a: %f", red, green, blue, alpha);



}

}
}

这就是我找到的解决办法

- (IBAction)handlePans:(UIPanGestureRecognizer *)event{
if (event.numberOfTouches==1){

tranx = [event locationInView:self].x;
trany = [event locationInView:self].y;

CGPoint vel = [event velocityInView:self];
    velocityx = vel.x;
    velocityy = vel.y;

// NSLog(@"x: %d y:%d", tranx,trany);
//NSLog(@"velocity x - %f", vel.x);
//NSLog(@"velocity y - %f", vel.y);

_imageselct = [UIImage imageNamed:@"GASOLINE.png"];
CFDataRef pixelData =  CGDataProviderCopyData(CGImageGetDataProvider(_imageselct.CGImage));
const UInt8* data = CFDataGetBytePtr(pixelData);
int pixelInfo = ((workingImage.size.width  * trany) + tranx ) * 4;
float red = data[pixelInfo];
float green = data[(pixelInfo+1)];
float blue = data[pixelInfo + 2];
float alpha = data[pixelInfo + 3];
CFRelease(pixelData);
UIColor* color = [UIColor colorWithRed:red/255.0f green:green/255.0f blue:blue/255.0f alpha:alpha/255.0f];

if ([color getRed:&red green: &green blue: &blue alpha: &alpha]){

    NSLog(@"r: %f g: %f b: %f a: %f", red, green, blue, alpha);



}

}
}


你到底想干什么?为什么你认为你需要一个CGBitmapContext?如果您只想绘制,为什么不简单地将图像绘制到图形上下文中?是的,您确定需要使用
CGBitmapContext
?它是一个低级API;非常强大,但很复杂。考虑一下<代码> UIImage <代码>,看看它是否符合你的需要。它可以为你解码PNG文件,还有更多。嗨,马特,我的目的是通过触摸或平移从中获取像素数据RGB值。还有其他更简单的方法吗?我不是要批评(好的,是的,我真的这么做),但如果这是你想知道的,那么这就是你应该问的。你仍然没有清楚地说出你想要答案的问题。也许你想知道的是用户点击的像素是否是透明的;那样的话。(如果你需要一个像素上更完整的RGB信息,很容易看到如何调整代码。)你到底想做什么?为什么你认为你需要一个CGBitmapContext?如果您只想绘制,为什么不简单地将图像绘制到图形上下文中?是的,您确定需要使用
CGBitmapContext
?它是一个低级API;非常强大,但很复杂。考虑一下<代码> UIImage <代码>,看看它是否符合你的需要。它可以为你解码PNG文件,还有更多。嗨,马特,我的目的是通过触摸或平移从中获取像素数据RGB值。还有其他更简单的方法吗?我不是要批评(好的,是的,我真的这么做),但如果这是你想知道的,那么这就是你应该问的。你仍然没有清楚地说出你想要答案的问题。也许你想知道的是用户点击的像素是否是透明的;那样的话。(如果你需要一个像素上更完整的RGB信息,很容易看到如何调整代码。)你到底想做什么?为什么你认为你需要一个CGBitmapContext?如果您只想绘制,为什么不简单地将图像绘制到图形上下文中?是的,您确定需要使用
CGBitmapContext
?它是一个低级API;非常强大,但很复杂。考虑一下<代码> UIImage <代码>,看看它是否符合你的需要。它可以为你解码PNG文件,还有更多。嗨,马特,我的目的是通过触摸或平移从中获取像素数据RGB值。还有其他更简单的方法吗?我不是要批评(好的,是的,我真的这么做),但如果这是你想知道的,那么这就是你应该问的。你仍然没有清楚地说出你想要答案的问题。也许你想知道的是用户点击的像素是否是透明的;那样的话。(如果你需要一个像素上更完整的RGB信息,很容易看到如何调整代码。)你到底想做什么?为什么你认为你需要一个CGBitmapContext?如果您只想绘制,为什么不简单地将图像绘制到图形上下文中?是的,您确定需要使用
CGBitmapContext
?它是一个低级API;非常强大,但很复杂。考虑一下<代码> UIImage <代码>,看看它是否符合你的需要。它可以为你解码PNG文件,还有更多。嗨,马特,我的目的是通过触摸或平移从中获取像素数据RGB值。还有其他更简单的方法吗?我不是要批评(好的,是的,我真的这么做),但如果这是你想知道的,那么这就是你应该问的。你仍然没有清楚地说出你想要答案的问题。也许你想知道的是用户点击的像素是否是透明的;那样的话。(如果您需要像素上更完整的RGB信息,很容易看到如何调整该代码。)性能说明:CGDataProviderCopyData复制整个图像。我不是专家,但您最初使用CGBitmapContext的本能可能更有效。具体来说,使用CGBitmapContextGetData获取指针(而不是副本)。请参阅性能说明:CGDataProviderCopyData复制整个映像。我不是专家,但您最初使用CGBitmapContext的本能可能更有效。具体来说,使用CGBitmapContextGetData获取指针(而不是副本)。请参阅性能说明:CGDataProviderCopyData复制整个映像。我不是专家,但您最初使用CGBitmapContext的本能可能更有效。具体来说,使用CGBitmapContextGetData获取指针(而不是副本)。请参阅性能说明:CGDataProviderCopyData复制整个映像。我不是专家,但你的