0

這裏是我的代碼:分享高分辨率圖像

- (void)shareButtonTapped 
{ 
    CGSize newImageSize = CGSizeMake(850.0, 850.0); 
    UIGraphicsBeginImageContextWithOptions(newImageSize, YES, _aImageView.image.scale); 
    [self.aImageView.layer renderInContext:UIGraphicsGetCurrentContext()]; 
    [self.aImageView.image drawInRect:CGRectMake(0, 0, newImageSize.width, newImageSize.height)]; 
    UIImage * image = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 

    // UIActivityViewController code here 
} 

現在,如果我的郵件按鈕點擊,例如,圖像是newImageSize,但我的_aImageView.image僅在左上角顯示而圖像的其餘部分則全黑。

如何編輯此代碼以將圖像縮放到850 x 850或高分辨率大小,以便在通過電子郵件或社交媒體共享時看起來會很清晰?

謝謝!

編輯*

仍停留。我覺得我快到了。

這是我的新代碼:

- (void)shareButtonTapped 
{ 
     _topBarImageView.hidden = YES; 
     _bottomBarImageView.hidden = YES; 

     CGSize newImageSize = CGSizeMake(600.0, 600.0); 
     UIGraphicsBeginImageContextWithOptions(newImageSize, YES, _aImageView.image.scale); 
     [_aImageView.layer = renderInContext:UIGraphicsGetCurrentContext()]; 
     [_aLabel drawTextInRect:CGRectMake(20, 250, 280, 140)]; 
     UIImage * image = UIGraphicsGetImageFromCurrentImageContext(); 
     UIImage * newImage = [UIImage imageWithImage:image scaledToSize:newImageSize]; 
     UIGraphicsEndImageContext(); 

     _topBarImageView.hidden = NO; 
     _bottomBarImageView.hidden = NO; 

     // Share Code 
} 

所以我躲在一對夫婦在該屏幕上的定製imageViews的。我唯一想分享的就是aImageView和aLabel。

現在,當我打開我的電子郵件例如,我可以看到newImageSize,但大部分框仍然是黑色的。我仍然無法弄清楚我缺少的東西。

+0

我覺得這一類是用於調整非常方便:https://github.com/AliSoftware/UIImage-Resize –

回答

0

請嘗試以下代碼:

+ (UIImage*)imageWithImage:(UIImage*)image 
       scaledToSize:(CGSize)newSize; 
{ 
    UIGraphicsBeginImageContext(newSize); 
    [image drawInRect:CGRectMake(0,0,newSize.width,newSize.height)]; 
    UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 

    return newImage; 
} 

指定新的大小(850850),並通過您的原始圖像,但要確保你的身高和原始圖像的寬度之比應該是一樣的轉換圖像的比例。

希望這將作品周到,謝謝

編輯:

捕捉你的觀點的屏幕截圖遵循下面的代碼:

- (UIImage*)captureView:(UIView *)yourView { 
    CGRect rect = [[UIScreen mainScreen] bounds]; 
    UIGraphicsBeginImageContext(rect.size); 
    CGContextRef context = UIGraphicsGetCurrentContext(); 
    [yourView.layer renderInContext:context]; 
    UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 
    return image; 
} 
+0

謝謝。我將如何使用此方法並保存圖像中的其他元素,例如UILabel? –

+0

如果它們是yourView的子視圖,它們應該自動渲染到圖形上下文中。如果它們不是子視圖,則只需在渲染圖像後將其圖層渲染到上下文中即可。如果他們不是yourView的直接兄弟姐妹,那麼您可能必須改變您的環境,讓他們在正確的地方畫畫。 –