我們可以在不減小圖片的分辨率(質(zhì)量可以適當(dāng)減?。┑那闆r下,顯著減小圖片的大小
專業(yè)從事企業(yè)網(wǎng)站建設(shè)和網(wǎng)站設(shè)計(jì)服務(wù),包括網(wǎng)站建設(shè)、主機(jī)域名、雅安服務(wù)器托管、企業(yè)郵箱、微信公眾號(hào)開發(fā)、微信支付寶微信小程序開發(fā)、成都app軟件開發(fā)、軟件開發(fā)、等服務(wù)。公司始終通過不懈的努力和以更高的目標(biāo)來要求自己,在不斷完善自身管理模式和提高技術(shù)研發(fā)能力的同時(shí),大力倡導(dǎo)推行新經(jīng)濟(jì)品牌戰(zhàn)略,促進(jìn)互聯(lián)網(wǎng)事業(yè)的發(fā)展。
上面方法等價(jià)于下面: 壓縮圖片質(zhì)量
//將圖片壓縮到指定比例
等比例壓縮
圖片的壓縮其實(shí)是倆概念,
1、是 “壓” 文件體積變小,但是像素?cái)?shù)不變,長寬尺寸不變,那么質(zhì)量可能下降,
2、是 “縮” 文件的尺寸變小,也就是像素?cái)?shù)減少。長寬尺寸變小,文件體積同樣會(huì)減小。
這個(gè) UIImageJPEGRepresentation(image, 0.0),是1的功能。
這個(gè) [sourceImage drawInRect:CGRectMake(0,0,targetWidth, targetHeight)] 是2的功能。
所以,這倆你得結(jié)合使用來滿足需求,不然你一味的用1,導(dǎo)致,圖片模糊的不行,但是尺寸還是很大。
我們還可以對(duì)圖片進(jìn)行部分截取
//--------------截取部分圖片到指定位置-------------------------
工作中遇到需要將圖片壓縮之后上傳的需求。經(jīng)過多方查詢資料,目前總結(jié)出來兩種方式總結(jié)一下備用。
UIImageJPEGRepresentation(image, compression)
這個(gè)方法可以將iPhone拍攝的照片壓縮到幾百Kb的極限值,到極限值之后不管compression這個(gè)參數(shù)多小,該函數(shù)返回的數(shù)據(jù)大小都不會(huì)再改變。也就是說這個(gè)方法的壓縮是有最小值的,得到的是jpg格式。
另外有一個(gè)方法UIImagePNGRepresentation(#UIImage * _Nonnull image#)這個(gè)方法得到的數(shù)據(jù)會(huì)比之前那個(gè)方法得到的數(shù)據(jù)占用空間更大。
為了達(dá)到壓縮的目的,這種方法是有損的,就是會(huì)降低圖片質(zhì)量。
這種方法的到的圖片,newSize越小質(zhì)量越差,但是得到的圖片占用內(nèi)存越小。設(shè)置多大的newSize自己斟酌決定。
綜合一下自己平常在開發(fā)中常用的就是,先使用第一種方法保持精度不變,compression選擇0.6或者0.7進(jìn)行第一次壓縮,然后再用第二種方法進(jìn)行尺寸壓縮,得到的就是我們最終想要的圖片。
iphone壓縮照片最簡單的方法如下:
設(shè)備:蘋果8。
系統(tǒng):ios13.2.1。
軟件:視頻圖片壓縮6.2.1。
1、打開圖片壓縮軟件
首先在iPhone桌面點(diǎn)擊下載的圖片壓縮軟件,進(jìn)入軟件頁面。
2、選擇壓縮圖片
在軟件首頁,點(diǎn)擊選擇“壓縮照片”功能,進(jìn)入照片選擇頁面。
3、開始?jí)嚎s
在照片選擇頁面選擇需要壓縮的照片,選擇完成后點(diǎn)擊頁面上的“壓縮”開始圖像壓縮操作。
4、選擇參數(shù)
在彈出的確認(rèn)框中,根據(jù)實(shí)際壓縮需要調(diào)整壓縮參數(shù)。
5、壓縮完成
軟件壓縮完成后,頁面會(huì)提示“壓縮文件成功”。 這時(shí)候就可以根據(jù)頁面提示查看壓縮后的圖片了。
項(xiàng)目工程里面用到了圖片壓縮,這邊做了個(gè)筆記整理了一下。
壓縮:圖片文件的體積變小,長寬尺寸不變,質(zhì)量可能下降。
裁剪:文件尺寸變小,長寬尺寸變小,文件體積大小會(huì)變小。
在iOS中圖片壓縮使用到兩個(gè)關(guān)鍵方法: UIImageJPEGRepresentation 和 UIImagePNGRepresentation 使用方式如下。
下面我們用圖片測(cè)試一下兩個(gè)方法的差異。就使用的本文上面的那張傍晚iPhone拍攝的圖片,具體參數(shù)如圖:
使用 UIImagePNGRepresentation(image) 返回的數(shù)據(jù)量大小為 1,299,138?字節(jié)(磁盤上的1.3?MB) 。
使用 UIImageJPEGRepresentation(image, 1.0) 返回的數(shù)據(jù)量大小為 183,531?字節(jié)(磁盤上的184?KB 。
可以看到 UIImagePNGRepresentation(UIImage \*image) 要比 UIImageJPEGRepresentation(UIImage* image, 1.0) 返回的圖片數(shù)據(jù)量大很多。
使用 UIImageJPEGRepresentation 可以大幅度降低圖片的數(shù)據(jù)量,比如剛才拍攝的那張圖片,通過該方法壓縮之后,數(shù)據(jù)大小僅為 184?KB 。 更改壓縮系數(shù)為0.5再讀取數(shù)據(jù)時(shí),返回的數(shù)據(jù)大小只有 111?KB 。圖片大小壓縮了,但是清晰度并沒有像差多少,質(zhì)量也沒有明顯的降低。
所以在讀取圖片數(shù)據(jù)的時(shí)候,建議優(yōu)先使用 UIImageJPEGRepresentation ,根據(jù)實(shí)際業(yè)務(wù)需求,設(shè)置壓縮系數(shù)。
1、品牌型號(hào):iPhone12,系統(tǒng)版本:iOS14.7。首先,我們?cè)谔O果手機(jī)主屏幕中點(diǎn)擊“視頻圖片壓縮”APP。
2、打開后,我們點(diǎn)擊頁面的壓縮照片選項(xiàng)右側(cè)的“立即壓縮”。
3、這時(shí),我們點(diǎn)擊選擇要壓縮的圖片。
4、點(diǎn)擊完畢后,我們點(diǎn)擊頁面右下角的“添加”。
5、隨后,我們?cè)诖翱谥袑ⅰ皥D片質(zhì)量”與“圖片分辨率”調(diào)小。
6、調(diào)節(jié)完畢后,點(diǎn)擊下方的“go”。這時(shí),我們就可以將壓縮好的圖片傳送出去了。
我們假設(shè)要在截圖中的舉行圖片展示區(qū)顯示圖片,由于原圖片的寬高比例與圖片顯示窗口的寬高比例不一定相同,所以,直接將圖片扔進(jìn)去會(huì)改變圖片的寬高比例,展示效果不好。
這時(shí)你可能想到設(shè)置UIImageView的屬性 _imageView.contentMode = UIViewContentModeCenter;? 設(shè)置該屬性后,我們會(huì)發(fā)現(xiàn)圖片的寬高比例確實(shí)正確了,但是窗口中只顯示了圖片的一部分,這說明圖片整體尺寸沒有壓縮,按照原圖進(jìn)行顯示了。怎樣才能達(dá)到既縮小圖片又不改變?cè)瓉淼膶捀弑壤兀?/p>
方法一:將圖片按照原來的寬高比例壓縮到與窗口合適的大小,然后在設(shè)置了_imageView.contentMode = UIViewContentModeCenter;? 這個(gè)屬性的UIImageView中展示壓縮后的圖片。
//壓縮圖片
- (UIImage *)image:(UIImage*)image scaledToSize:(CGSize)newSize
{
// 創(chuàng)建一個(gè)圖形上下文形象
UIGraphicsBeginImageContext(newSize);
// 告訴舊圖片畫在這個(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é)果表明方法二效果更好。
本文題目:ios開發(fā)圖片壓縮,ios圖片怎么壓縮成文件
分享路徑:http://chinadenli.net/article18/hohogp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計(jì)公司、網(wǎng)站導(dǎo)航、外貿(mào)建站、營銷型網(wǎng)站建設(shè)、虛擬主機(jī)、自適應(yīng)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)