相关疑难解决方法(0)

如何从UIImage(Cocoa Touch)或CGImage(Core Graphics)获取像素数据?

我有一个UIImage(Cocoa Touch).从那以后,我很高兴得到一个CGImage或其他你想要的东西.我想写这个函数:

- (int)getRGBAFromImage:(UIImage *)image atX:(int)xx andY:(int)yy {
  // [...]
  // What do I want to read about to help
  // me fill in this bit, here?
  // [...]

  int result = (red << 24) | (green << 16) | (blue << 8) | alpha;
  return result;
}
Run Code Online (Sandbox Code Playgroud)

谢谢!

cocoa cocoa-touch core-graphics

196
推荐指数
9
解决办法
14万
查看次数

如何使用Swift获取UIImage中像素的颜色?

我试图用Swift获取UIImage中像素的颜色,但它似乎总是返回0.这是代码,从@Minas的答案转换到这个线程:

func getPixelColor(pos: CGPoint) -> UIColor {
    var pixelData = CGDataProviderCopyData(CGImageGetDataProvider(self.CGImage))
    var data: UnsafePointer<UInt8> = CFDataGetBytePtr(pixelData)

    var pixelInfo: Int = ((Int(self.size.width) * Int(pos.y)) + Int(pos.x)) * 4

    var r = CGFloat(data[pixelInfo])
    var g = CGFloat(data[pixelInfo+1])
    var b = CGFloat(data[pixelInfo+2])
    var a = CGFloat(data[pixelInfo+3])

    return UIColor(red: r, green: g, blue: b, alpha: a)
}
Run Code Online (Sandbox Code Playgroud)

提前致谢!

uiimage ios swift

46
推荐指数
7
解决办法
4万
查看次数

iOS性能调整:获取大图像像素颜色的最快方法

关于如何获得给定点的图像的像素颜色存在许多问题/答案.但是,对于大型图像(例如,甚至小到1000 x 1300),所有这些答案都非常慢(100-500ms).

大多数代码示例都绘制到图像上下文.当实际抽签时,所有这些都需要时间:

CGContextDrawImage(context, CGRectMake(0.0f, 0.0f, (CGFloat)width, (CGFloat)height), cgImage)
Run Code Online (Sandbox Code Playgroud)

在Instruments中对此进行检查后发现,通过从源图像复制数据来完成绘制:

在此输入图像描述

我甚至尝试过不同的方法来获取数据,希望自己获得字节实际上会更有效率.

NSInteger pointX = trunc(point.x);
NSInteger pointY = trunc(point.y);
CGImageRef cgImage = CGImageCreateWithImageInRect(self.CGImage, 
                           CGRectMake(pointX * self.scale, 
                                      pointY * self.scale, 
                                      1.0f, 
                                      1.0f));

CGDataProviderRef provider = CGImageGetDataProvider(cgImage);
CFDataRef data = CGDataProviderCopyData(provider);

CGImageRelease(cgImage);

UInt8* buffer = (UInt8*)CFDataGetBytePtr(data);

CGFloat red   = (float)buffer[0] / 255.0f;
CGFloat green = (float)buffer[1] / 255.0f;
CGFloat blue  = (float)buffer[2] / 255.0f;
CGFloat alpha = (float)buffer[3] / 255.0f;

CFRelease(data);

UIColor *pixelColor = [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; …
Run Code Online (Sandbox Code Playgroud)

performance core-graphics uiimage ios

11
推荐指数
2
解决办法
5475
查看次数

如何在Swift for iOS中以像素级加载和编辑位图文件?

我想在Swift中操作像素级别的图像.针对目标c回答了这个问题:如何访问和操作JPEG图像像素?,但我想看看Swift的等效来源.

bitmap image-processing pixels swift

10
推荐指数
1
解决办法
1万
查看次数

检查UIImage的问题是否具有alpha(透明)颜色

我正在检查图像是否有透明区域(alpha).在此基础上,我必须改变颜色UIImage

我已经实现了以下方法来检查图像是否有alpha.

- (BOOL) checkAlpha  : (UIImage*) image
{
    for(int x = 0; x <  image.size.width ; x++)
    {
        for(int y = 0; y < image.size. height; y++)
        {
            CFDataRef pixelData = CGDataProviderCopyData(CGImageGetDataProvider(image.CGImage));
            const UInt8* data = CFDataGetBytePtr(pixelData);

            int pixelInfo = ((image.size.width  * y) + x ) * 4; // The image is png

            UInt8 red = data[pixelInfo];         // If you need this info, enable it
            UInt8 green = data[(pixelInfo + 1)]; // If you need this …
Run Code Online (Sandbox Code Playgroud)

objective-c alpha-transparency uiimage ios

5
推荐指数
2
解决办法
1753
查看次数

仅在另一个UIImage中移动UIImage

我有一个UIImage显示在UIImageView.我还有另一张图像位于UIImageView第一张图像上方.我希望能够仅在第一个图像的边框内拖动第二个图像.为了让我的目标更清晰一点,请看这张图片:http: //img689.imageshack.us/img689/6136/56308823.png.

绿色引脚应该是可拖动的,但不应该将引脚拖动到蓝色(地图外部).此刻引脚是可拖动的,但我不知道如何检查引脚是否在地图之外.

编辑:我在我的UIImageView子类中使用此方法的可拖动引脚:

- (UIColor *)colorAtPosition:(CGPoint)position {

CGRect sourceRect = CGRectMake(position.x, position.y, 1.f, 1.f);
CGImageRef imageRef = CGImageCreateWithImageInRect([[MapViewController sharedMapViewController]getImage].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] …
Run Code Online (Sandbox Code Playgroud)

iphone uiimageview uiimage uitouch ios

3
推荐指数
1
解决办法
691
查看次数

滑动时更改UIslider拇指图像

我想在幻灯片中更改UISlider拇指图像.
基本上根据值设置thumbImage.
在此输入图像描述

我们的想法是根据值旋转图像并将其设置为拇指.
所以我尝试通过覆盖来设置拇指图像

-(BOOL)continueTrackingWithTouch:(UITouch *)touch withEvent:(UIEvent *)event
 [self setThumbImage:[self imageRotatedByDegrees:50] forState:UIControlStateHighlighted];
Run Code Online (Sandbox Code Playgroud)

当我向滑块添加动作时,我也尝试了同样的事情.不幸的是,在两种实现中,图像都消失了.
你觉得有可能以我的方式实现吗?如果没有,请解释并建议一种替代方式(希望不是一个可以自定义和替换整个滑块的方法)
如果是的话,我将非常感谢代码示例. 我在这里找到的答案越接近

非常感谢.

objective-c uislider ios

3
推荐指数
1
解决办法
4582
查看次数

带有点击识别器的彩色像素

大家好,我的 iOS 应用需要帮助。如何在我点击的位置获取图像的背景颜色(我在 UIImageView 中插入)。我创建了一个点击手势识别器,但我不知道如何读取我点击的背景颜色。

objective-c ios

-1
推荐指数
1
解决办法
193
查看次数