Tom*_*ulc 6 objective-c rotation flip uiimage
我从相机胶卷加载图像,但此图像是颠倒的.所以我写了旋转它的方法.
CGImageRef imageRef = [image CGImage];
float width = CGImageGetWidth(imageRef);
float height = CGImageGetHeight(imageRef);
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
Byte *rawData = malloc(height * width * 4);
Byte bytesPerPixel = 4;
int bytesPerRow = bytesPerPixel * width;
Byte bitsPerComponent = 8;
CGContextRef context = CGBitmapContextCreate(rawData, width, height, bitsPerComponent, bytesPerRow, colorSpace, kCGImageAlphaPremultipliedLast | kCGBitmapByteOrder32Big);
CGColorSpaceRelease(colorSpace);
int byteIndex = 0;
CGContextDrawImage(context, CGRectMake(0, 0, width, height), imageRef);
Byte *rawData2 = malloc(height * width * 4);
for (int i = 0 ; i < width * height ; i++) {
int index = (width * height) * 4;
rawData2[byteIndex + 0] = rawData[index - byteIndex + 0];
rawData2[byteIndex + 1] = rawData[index - byteIndex + 1];
rawData2[byteIndex + 2] = rawData[index - byteIndex + 2];
rawData2[byteIndex + 3] = rawData[index - byteIndex + 3];
byteIndex += 4;
}
CGContextRef ctx = CGBitmapContextCreate(rawData2, CGImageGetWidth( imageRef ), CGImageGetHeight( imageRef ), 8, CGImageGetBytesPerRow( imageRef ), CGImageGetColorSpace( imageRef ),kCGImageAlphaPremultipliedLast );
imageRef = CGBitmapContextCreateImage (ctx);
image = [UIImage imageWithCGImage:imageRef];
CGContextRelease(context);
return image;
Run Code Online (Sandbox Code Playgroud)
没关系,但现在我必须水平翻转它,我不知道我该怎么做.我试着第二天这样做.
谢谢你的帮助
ser*_*gio 21
你试过这个:
imageView.transform = CGAffineTransformMakeScale(-1, 1);
Run Code Online (Sandbox Code Playgroud)
?
您还可以使用转换进行旋转:
imageView.transform = CGAffineTransformMakeRotation(M_PI);
Run Code Online (Sandbox Code Playgroud)
您可以将这两个转换结合在一起,如下所示:
imageView.transform = CGAffineTransformRotation(CGAffineTransformMakeScale(-1, 1), M_PI);
Run Code Online (Sandbox Code Playgroud)
如果你想制作自己的UIImage对象,而不是操纵视图和转换,我仍然建议你使用上面描述的方法使视图根据你的喜好绘制图像,然后将你的UIView内容转换为一个UIImage对象:
UIGraphicsBeginImageContext(rect.size);
[imageView.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage* viewImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5784 次 |
| 最近记录: |