[英]iPhone:How to implement “move and scale” functionality for image fetched from photo library
如下圖所示,我想為從照片庫中提取的圖像實現“移動和縮放”功能。
如果您有任何想法或代碼,請提供給我。
Thanx提前。
來自此問題的答案設置UIImagePickerController“移動和縮放”裁剪框的尺寸
我建議的解決方案是禁用圖像選擇器的編輯並自行處理。 例如,我將圖像放在可滾動的可縮放圖像視圖中。 在圖像視圖的頂部是固定位置“裁剪指南視圖”,其繪制用戶看到的裁剪指示符。 假設引導視圖具有可見rect(要保留的部分)和邊緣寬度(要丟棄的部分)的屬性,您可以像這樣獲得裁剪矩形。
1) 裁剪UIImage的鏈接
2) 另一個鏈接
這是非常晚的,但希望它會有所幫助。
在UIImagePickerController委托方法imagePickerController:didFinishPickingMediaWithInfo:
通過UIImagePickerControllerEditedImage
鍵訪問“移動”和“縮放”圖像
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
UIImage *img = (UIImage *)[info objectForKey: UIImagePickerControllerEditedImage];
// Do what you need to with that image
}
希望它可以幫到某人!
也許您正在尋找:
UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];
[imagePicker setAllowsEditing:YES];
然后在委托方法中:
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
UIImage *chosenImage = [info objectForKey:UIImagePickerControllerEditedImage];
if(!chosenImage) {
chosenImage = [info objectForKey:UIImagePickerControllerOriginalImage];
}
[self dismissViewControllerAnimated:YES completion:nil];
}
在Swift 4.2中,請確保將pickerController.allowsEditing = true
添加到訪問照片的方法中。
然后,使用兩個符合條件的“if語句”創建以下方法。 “if語句”將涵蓋兩種不同的場景:1)用戶編輯照片 - .editedImage
或2)用戶沒有編輯照片 - .originalImage
。
要使此方法正常工作,請務必先放置.editedImage
“if語句”。 我不知道為什么會這樣,但我不得不這樣做。
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
if let editedImage = info[UIImagePickerController.InfoKey.editedImage] as? UIImage {
imageView.image = editedImage
} else if let image = info[UIImagePickerController.InfoKey.originalImage] as? UIImage {
imageView.image = image
}
self.dismiss(animated: true, completion: nil)
}
只有當其他人不工作時,請通過這個答案。:)
在ZBar項目中有一些示例應用程序,它們采用條形碼的圖片。 它允許移動和縮放圖像。 我看着代碼。 但你可以嘗試作為你的最后選擇。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.