我有一个手绘视图(用户可以用手指画线)。我只使用了几种颜色,所以我编写了一个压缩算法(想通过本地网络将其发送到另一台 iPad),但我似乎无法准确地从图形上下文中获取数据,即使使用这个简单的测试:
//Get the data
UIGraphicsBeginImageContextWithOptions(self.bounds.size, NO, 0.0f);
CGContextRef c = UIGraphicsGetCurrentContext();
[self.layer renderInContext:c];
baseImageView.image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
CGImageRef imageRef = baseImageView.image.CGImage;
NSData *dataToUse = (NSData *)CGDataProviderCopyData(CGImageGetDataProvider(imageRef));
//Reuse the data
CGDataProviderRef provider = CGDataProviderCreateWithCFData((CFDataRef)dataToUse);
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
CGImageRef test = CGImageCreate(width,height,8,32,4*width,colorSpace,
kCGBitmapByteOrder32Big|kCGImageAlphaPremultipliedLast,provider,NULL,false,
kCGRenderingIntentDefault); //I get width and height from another part of the program
imageView.image = [UIImage imageWithCGImage:test];
我只是从一个 CGImage 中复制了数据并尝试将其插入到另一个中。但是,结果是垃圾,不仅如此,由于某种原因,当我复制数据时它会显示为 BGRA,但 CGImageCreate 需要 RGBA。这个往返测试我哪里出错了?