iOS開(kāi)發(fā)-調(diào)整Image方向

** 當(dāng)我們通過(guò)相機(jī)或是在相冊(cè)中取圖片上傳到服務(wù)器的時(shí)候,服務(wù)器端顯示的圖片的方向可能會(huì)向左旋轉(zhuǎn),我們可以寫(xiě)一個(gè)UIImage的分類(lèi)來(lái)調(diào)整Image的方向;**

- (UIImage *)fixOrientation
{
    if (self.imageOrientation == UIImageOrientationUp)
        return self;
    
    CGAffineTransform transform = CGAffineTransformIdentity;
    
    switch (self.imageOrientation) {
        case UIImageOrientationDown:
        case UIImageOrientationDownMirrored:
            transform = CGAffineTransformTranslate(transform, self.size.width, self.size.height);
            transform = CGAffineTransformRotate(transform, M_PI);
            break;
            
        case UIImageOrientationLeft:
        case UIImageOrientationLeftMirrored:
            transform = CGAffineTransformTranslate(transform, self.size.width, 0);
            transform = CGAffineTransformRotate(transform, M_PI_2);
            break;
            
        case UIImageOrientationRight:
        case UIImageOrientationRightMirrored:
            transform = CGAffineTransformTranslate(transform, 0, self.size.height);
            transform = CGAffineTransformRotate(transform, -M_PI_2);
            break;
        default:
            break;
    }
    
    switch (self.imageOrientation) {
        case UIImageOrientationUpMirrored:
        case UIImageOrientationDownMirrored:
            transform = CGAffineTransformTranslate(transform, self.size.width, 0);
            transform = CGAffineTransformScale(transform, -1, 1);
            break;
            
        case UIImageOrientationLeftMirrored:
        case UIImageOrientationRightMirrored:
            transform = CGAffineTransformTranslate(transform, self.size.height, 0);
            transform = CGAffineTransformScale(transform, -1, 1);
            break;
        default:
            break;
    }
    
    CGContextRef ctx = CGBitmapContextCreate(NULL, self.size.width, self.size.height,
                                             CGImageGetBitsPerComponent(self.CGImage), 0,
                                             CGImageGetColorSpace(self.CGImage),
                                             CGImageGetBitmapInfo(self.CGImage));
    CGContextConcatCTM(ctx, transform);
    switch (self.imageOrientation) {
        case UIImageOrientationLeft:
        case UIImageOrientationLeftMirrored:
        case UIImageOrientationRight:
        case UIImageOrientationRightMirrored:
            CGContextDrawImage(ctx, CGRectMake(0,0,self.size.height,self.size.width), self.CGImage);
            break;
        default:
            CGContextDrawImage(ctx, CGRectMake(0,0,self.size.width,self.size.height), self.CGImage);
            break;
    }
    CGImageRef cgimg = CGBitmapContextCreateImage(ctx);
    UIImage *img = [UIImage imageWithCGImage:cgimg];
    CGContextRelease(ctx);
    CGImageRelease(cgimg);
    return img;
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫(kù)、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 15,041評(píng)論 4 61
  • 全身黃澄澄的羽毛,尖尖的嘴巴上面長(zhǎng)著綠豆般透亮靈活的眼睛,短短的尾巴擺來(lái)擺去,撲打著金光燦爛的翅膀,原來(lái)...
    林林林_d046閱讀 468評(píng)論 13 7
  • 1.沿途風(fēng)景 陜西 青海 2. 高原反應(yīng) 說(shuō)到西藏旅游,最關(guān)注的莫過(guò)于高原反應(yīng),很多網(wǎng)友都說(shuō)大部分人會(huì)有高原反應(yīng),...
    小薇_f423閱讀 311評(píng)論 2 3
  • 姓名:鄧支援 公司:余姚大發(fā)化纖有限公司 組別:六項(xiàng)精進(jìn)301期利他二組 】【知~學(xué)習(xí)】 《六項(xiàng)精進(jìn)》大綱 背誦3...
    鄧支援閱讀 201評(píng)論 0 0
  • 越來(lái)越不喜歡一早起來(lái)擠地鐵上班了,盡管我家距離單位地圖上只有五公里、地鐵四到五站。出行高峰期間步入地鐵入口,這里就...
    梵芃閱讀 469評(píng)論 0 0

友情鏈接更多精彩內(nèi)容