具體實現就兩個步驟:
綏中網站制作公司哪家好,找創(chuàng)新互聯公司!從網頁設計、網站建設、微信開發(fā)、APP開發(fā)、響應式網站開發(fā)等網站項目制作,到程序開發(fā),運營維護。創(chuàng)新互聯公司從2013年開始到現在10年的時間,我們擁有了豐富的建站經驗和運維經驗,來保證我們的工作的順利進行。專注于網站建設就選創(chuàng)新互聯公司。
1.用系統(tǒng)的 Photos/Photos.h 框架異步獲取到相冊中的所有圖片(包括原圖和縮略圖),然后用 collectionview 進行展示縮略圖。
2.再對獲取到相冊圖片的原圖進行裁剪,分圓形裁剪和方形裁剪。裁剪框路徑使用貝塞爾曲線分別設置的路徑
/**
獲取系統(tǒng)相冊中所有的縮略圖 和原圖
縮略圖 尺寸 大約 {32.5,60} (allSmallImageArray 回調獲取到的縮略圖 圖片數組)
原圖 尺寸 大約 屏幕等大 (allOriginalImageArray 回調獲取到的大圖 圖片數組)
*/
/**
然后自定義一個照片控制器繼承于 UICollectionViewController ,設置代理回調方法和初始化方法
HPPhotoPickerController.h
在 iOS 開發(fā)過程中,對圖片的處理不僅僅局限于顯示、渲染樣式,還常常遇到對view指定區(qū)域截圖,以及對圖片的壓縮、拉伸等操作。下面我們介紹一下類似的操作過程:
注:通過 UIGraphicsBeginImageContextWithOptions(CGSize size, BOOL opaque, CGFloat scale) 和 drawViewHierarchyInRect 的配合來截取并渲染出來的圖片位置和大小,是由前者的size和后者的rect共同決定的。 即,畫布相當于父view,其尺寸為size,截圖繪制到畫布中的位置和尺寸為rect。
想試一試的同學,可以創(chuàng)建一個demo,取不同的size和rect值,來觀察畫布和截圖的位置。也可以試著將畫布和截圖完全吻合,即將截圖完整的渲染出來,這并不難。
裁剪圖片就是對當前的圖片按照指定的大小范圍生成一個新的圖片。需要注意的是如果當前顯示圖片是2倍圖或者3倍圖,要么可能尺寸不對,要么截出來的圖片很模糊,因此,需要在截圖前調整rect值。
注:UIImageJPEGRepresentation 兩個參數:圖片引用 和壓縮系數,而 UIImagePNGRepresentation 只需圖片引用作為參數。在實際使用過程中,UIImagePNGRepresentation(UIImage* image) 一般要比UIImageJPEGRepresentation(UIImage* image, 1.0) 返回的圖片數據量大,在處理圖片時,若對圖片質量要求不高,則建議使用UIImageJPEGRepresentation,根據自己的實際使用場景設置壓縮系數,進一步降低圖片數據量大小。
在 = iOS 5.0 時,UIImage的新方法可以處理圖片的拉伸問題:
使用過程:
在 = iOS 6.0 時,UIImage的新方法可以處理圖片的拉伸問題:
使用過程:
參考文章:
NSInteger scale =? [UIScreenmainScreen].scale;//屏幕像素比
image = [image setImageFrame:CGRectMake(0,0, image.size.width*scale, imageHeight*scale)];
-(UIImage*)setImageFrame:(CGRect)rect{
// 原始圖片
UIImage*image = self ;
// 圖片處理對象
CGImageRefimageRef =image.CGImage;
// 裁剪區(qū)域
CGRectcutArea =CGRectMake(rect.origin.x,
? ? ? ? ? ? ? ? ? ? ? ? ? ? rect.origin.y,
? ? ? ? ? ? ? ? ? ? ? ? ? ? rect.size.width,
? ? ? ? ? ? ? ? ? ? ? ? ? ? rect.size.height);
// 裁剪后的圖片
CGImageRef cgImage = CGImageCreateWithImageInRect(imageRef,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? cutArea);
UIImage*cutImage = [[UIImagealloc]initWithCGImage:cgImage];
return cutImage;
}
項目工程里面用到了圖片壓縮,這邊做了個筆記整理了一下。
壓縮:圖片文件的體積變小,長寬尺寸不變,質量可能下降。
裁剪:文件尺寸變小,長寬尺寸變小,文件體積大小會變小。
在iOS中圖片壓縮使用到兩個關鍵方法: UIImageJPEGRepresentation 和 UIImagePNGRepresentation 使用方式如下。
下面我們用圖片測試一下兩個方法的差異。就使用的本文上面的那張傍晚iPhone拍攝的圖片,具體參數如圖:
使用 UIImagePNGRepresentation(image) 返回的數據量大小為 1,299,138?字節(jié)(磁盤上的1.3?MB) 。
使用 UIImageJPEGRepresentation(image, 1.0) 返回的數據量大小為 183,531?字節(jié)(磁盤上的184?KB 。
可以看到 UIImagePNGRepresentation(UIImage \*image) 要比 UIImageJPEGRepresentation(UIImage* image, 1.0) 返回的圖片數據量大很多。
使用 UIImageJPEGRepresentation 可以大幅度降低圖片的數據量,比如剛才拍攝的那張圖片,通過該方法壓縮之后,數據大小僅為 184?KB 。 更改壓縮系數為0.5再讀取數據時,返回的數據大小只有 111?KB 。圖片大小壓縮了,但是清晰度并沒有像差多少,質量也沒有明顯的降低。
所以在讀取圖片數據的時候,建議優(yōu)先使用 UIImageJPEGRepresentation ,根據實際業(yè)務需求,設置壓縮系數。
水天一色水天一色 3657次瀏覽2019.03.25
蘋果手機剪裁照片的方法有兩種,一種是用自帶的編輯軟件,一種是用最常用的美圖秀秀軟件。雖然蘋果自帶的編輯軟件在濾鏡上輸給了美圖秀秀,但是在裁剪功能上,個人認為比美圖秀秀要更好一些。
開啟分步閱讀模式
工具材料:
蘋果手機
方法1:用蘋果手機自帶的編輯軟件裁剪
01
選擇需要裁剪的照片,點擊編輯。
02
點擊編輯后,下面出現一排圖標,點擊第一個裁剪圖標。
03
點擊裁剪后,立刻出現了裁剪邊框。拖動裁剪邊框,任何變成需要的大小,一松手,就自動裁剪了。下面分別詳細介紹下裁剪的各個技巧。
04
如果往下拖動邊框,使邊框變得比以前大,照片就自動放大,松手后,自動剪裁為放大照片的一部分。
05
拖動邊框,使邊框縮小,照片不變,松手后,自動裁剪為原照片的一部分。
06
蘋果自帶的編輯軟件還可以旋轉剪輯照片。照片下,有一圈圓弧,下面有一個三角形的標志,點擊三角形的標志。
07
點擊后,出現很多小格子邊框。
08
然后長按住三角形標志,將照片往四周拖動,角度可以根據自己需要的調整,拖動的時候觀察小格子,可以很精確的調整角度。
09
調整好角度后,松手,就完成自動裁剪了。這個時候照片就是傾斜的。
10
除了這些方法,還可以按照比例來裁剪照片。如圖所示點擊編輯頁面的左下角比例圖標。
11
點擊后,有幾個選擇可供選擇。比如點擊正方形。
12
點擊正方形后,照片自動剪輯成為了下圖形狀。
13
剪輯完成后,點擊完成就可以了。如果覺得剪輯的不滿意,就點擊編輯里的還原,還原之后,自動變?yōu)橐郧暗恼掌?/p>
遇到的問題:
相機或相冊獲取圖片過大在運行時內存會瞬間提高很多(60M左右,可能會更大),我的解決方案是在獲取圖片時對圖片進行了裁剪(對圖片質量要求高的不適用)
附方法:具體裁剪的大小根據自己的需求設置
可擴展的功能:(有興趣的可以嘗試一下)
1.圖片放大、縮小
2.整體拖動裁剪區(qū)域