【发布时间】:2012-03-18 19:12:00
【问题描述】:
如下图所示,我想为从照片库中获取的图像实现“移动和缩放”功能。
如果您有任何想法或代码,请提供给我。
提前感谢。
【问题讨论】:
标签: iphone objective-c photo-gallery
如下图所示,我想为从照片库中获取的图像实现“移动和缩放”功能。
如果您有任何想法或代码,请提供给我。
提前感谢。
【问题讨论】:
标签: iphone objective-c photo-gallery
来自这个问题的答案Set dimensions for UIImagePickerController “move and scale” cropbox
我推荐的解决方案是禁用图像选择器的编辑 并自己处理。例如,我把图像放在一个可滚动的, 可缩放的图像视图。在图像视图的顶部是一个固定位置 绘制用户看到的裁剪指示器的“裁剪指南视图”。 假设导向视图具有可见矩形的属性(部分 要保留)和边缘宽度(要丢弃的部分),您可以获得 像这样裁剪矩形。
这是Re-sizing + UIImage的链接
2) Another link
【讨论】:
请仅在其他人不工作时才通过此答案.... :)
在ZBar project 中有一些示例应用程序,这些应用程序采用了 Barcode 的图片。它允许移动和缩放图像。我没有看过代码。但您可以尝试作为最后的选择。
【讨论】:
这已经很晚了,但希望它会有所帮助。
在 UIImagePickerController Delegate 方法 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)
}
【讨论】: