7

カメラロールから画像を読み込んでいますが、この画像は上下逆になっています。だから私はそれを回転させるメソッドを書きました。

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;

それは大丈夫です、しかし今私はそれを水平にひっくり返す必要があります、そして私はこれをどのように行うことができるかわかりません。私はこの2日目をやろうとします。

助けてくれてありがとう

4

1 に答える 1

23

これを試しましたか:

imageView.transform = CGAffineTransformMakeScale(-1, 1);

変換を使用して回転を行うこともできます。

imageView.transform = CGAffineTransformMakeRotation(M_PI);

次のように、2つの変換を1つにまとめることができます。

imageView.transform = CGAffineTransformRotation(CGAffineTransformMakeScale(-1, 1), M_PI);

UIImageビューや変換を操作するのではなく、独自のオブジェクトを作成する場合でも、上記のアプローチを使用して、ビューに必要に応じて画像を描画させてから、UIViewコンテンツをUIImageオブジェクトに変換することをお勧めします。

UIGraphicsBeginImageContext(rect.size);
[imageView.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage* viewImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
于 2012-07-29T10:19:00.927 に答える