0
我有一个UIImage
,当我的iPad保持纵向显示时,它看起来是正确的方式,但是当我得到CGImageRef
与之关联时,CGImageRef
逆时针旋转90度。谷歌搜索后,我知道这是因为CGImageRef
没有方向数据,不像UIImage
。我需要查看和修改一些像素在CGImageRef
,目前我在做这个通过直接访问RAWDATA变量(图像是一个UIImage *):如何旋转CGImageRef?
CGImageRef imageRef = [image CGImage];
CGColorSpaceRef colorSpaceRef = CGColorSpaceCreateDeviceRGB(); //maybe make ...Gray();
unsigned char *rawData = (unsigned char*) calloc(height * width * 4, sizeof(unsigned char));
CGContextRef context = CGBitmapContextCreate(rawData, width, height, bitsPerComponent, bytesPerRow, colorSpaceRef, kCGImageAlphaPremultipliedLast | kCGBitmapByteOrder32Big);
CGContextDrawImage(context, CGRectMake(0, 0, width, height), imageRef);
但是,为了让我正常修改rawData中存储的像素数据,我需要CGImageRef处于正确的方向。如何顺时针旋转CGImageRef
90度然后访问rawData(像素信息)?
为什么目标的高度和宽度需要翻转左/右方向?另外,为什么位图需要翻译? – Mahir
bitmapInfo从哪里来?你应该也可以释放CGContextRef。 – sdsykes