gpt4 book ai didi

ios - UIImage 在 int 数组中获取图像的像素

转载 作者:行者123 更新时间:2023-11-29 12:48:47 24 4
gpt4 key购买 nike

我想在 ios 中获取图像的像素。

我知道如何在 android 中做到这一点,我正在寻找 ios 的等效方法。

http://developer.android.com/reference/android/graphics/Bitmap.html#getPixels(int[], int, int, int, int, int, int)

我找到了一堆 ios 示例代码,但没有一个像 android 框架中那样干净。所以我猜测有一种更好、更简单的方法主要由框架处理。

最佳答案

我是这样用的

- (void) imagePixel:(UIImage *)image
{

struct pixel {
unsigned char r, g, b, a;
};


CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();

CGImageRef imageRef = image.CGImage;

size_t width = CGImageGetWidth(imageRef);
size_t height = CGImageGetHeight(imageRef);

struct pixel *pixels = (struct pixel *) calloc(1, sizeof(struct pixel) * width * height);


size_t bytesPerComponent = 8;
size_t bytesPerRow = width * sizeof(struct pixel);

CGContextRef context = CGBitmapContextCreate(pixels, width, height, bytesPerComponent, bytesPerRow, colorSpace, kCGImageAlphaPremultipliedLast | kCGBitmapByteOrder32Big);

CGContextDrawImage(context, CGRectMake(0, 0, width, height), imageRef);
unsigned long numberOfPixels = width * height;

if (context != NULL) {
for (unsigned i = 0; i < numberOfPixels; i++) {
//you can add code here
pixels[i].r;
pixels[i].g;
pixels[i].b;
}


free(pixels);
CGContextRelease(context);
}

CGColorSpaceRelease(colorSpace);

}

更新:

是的,您可以在发布上下文和释放像素之前重新创建图像

CGImageRef imageR = CGBitmapContextCreateImage(context);
UIImage *outputImage = [UIImage imageWithCGImage:imageR];

最后你应该发布 imageR

CGImageRelease(imageR)

关于ios - UIImage 在 int 数组中获取图像的像素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22944557/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com