Ios 将图像转换为CGBitmapContext
我对objective C比较陌生,可以将png图像转换为CGBitmapContext。如果是,我如何实施它 虽然无法从UIImage获得像素值,但可以通过UIImage的CGImage访问像素值。看看这篇文章中提供的信息。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
它使用
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复制整个映像。我不是专家,但你的