iOS 圖片顯示中遇到的壓縮與裁剪問(wèn)題

我們假設(shè)要在截圖中的舉行圖片展示區(qū)顯示圖片,由于原圖片的寬高比例與圖片顯示窗口的寬高比例不一定相同,所以,直接將圖片扔進(jìn)去會(huì)改變圖片的寬高比例,展示效果不好。

這時(shí)你可能想到設(shè)置UIImageView的屬性 _imageView.contentMode = UIViewContentModeCenter;? 設(shè)置該屬性后,我們會(huì)發(fā)現(xiàn)圖片的寬高比例確實(shí)正確了,但是窗口中只顯示了圖片的一部分,這說(shuō)明圖片整體尺寸沒(méi)有壓縮,按照原圖進(jìn)行顯示了。怎樣才能達(dá)到既縮小圖片又不改變?cè)瓉?lái)的寬高比例呢?

方法一:將圖片按照原來(lái)的寬高比例壓縮到與窗口合適的大小,然后在設(shè)置了_imageView.contentMode = UIViewContentModeCenter;? 這個(gè)屬性的UIImageView中展示壓縮后的圖片。

//壓縮圖片

- (UIImage *)image:(UIImage*)image scaledToSize:(CGSize)newSize

{

// 創(chuàng)建一個(gè)圖形上下文形象

UIGraphicsBeginImageContext(newSize);

// 告訴舊圖片畫(huà)在這個(gè)新的環(huán)境,所需的

// 新的尺寸

[image drawInRect:CGRectMake(0,0,newSize.width,newSize.height)];

// 新形象從上下文

UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext();

// 結(jié)束上下文

UIGraphicsEndImageContext();

// 返回新形象

return newImage;

}

上面方法的參數(shù)newSize是和圖片顯示窗口差不多大的,結(jié)果出現(xiàn)了原圖清晰,但壓縮后圖片不清晰的情況。

方法二:按照窗口寬高比例,將原圖橫向或者縱向裁剪掉多余的部分,然后不設(shè)置UIImageView的contentMode屬性,將裁剪后的圖片送進(jìn)去,使其自動(dòng)適應(yīng)窗口。

//裁剪圖片

- (UIImage *)cutImage:(UIImage*)image

{

//壓縮圖片

CGSize newSize;

CGImageRef imageRef = nil;

if ((image.size.width / image.size.height) < (_headerView.bgImgView.size.width / _headerView.bgImgView.size.height)) {

newSize.width = image.size.width;

newSize.height = image.size.width * _headerView.bgImgView.size.height / _headerView.bgImgView.size.width;

imageRef = CGImageCreateWithImageInRect([image CGImage], CGRectMake(0, fabs(image.size.height - newSize.height) / 2, newSize.width, newSize.height));

} else {

newSize.height = image.size.height;

newSize.width = image.size.height * _headerView.bgImgView.size.width / _headerView.bgImgView.size.height;

imageRef = CGImageCreateWithImageInRect([image CGImage], CGRectMake(fabs(image.size.width - newSize.width) / 2, 0, newSize.width, newSize.height));

}

return [UIImage imageWithCGImage:imageRef];

}

結(jié)果表明方法二效果更好。

最后編輯于
?著作權(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)容

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