【问题标题】:iPhone:How to implement "move and scale" functionality for image fetched from photo libraryiPhone:如何为从照片库中获取的图像实现“移动和缩放”功能
【发布时间】:2012-03-18 19:12:00
【问题描述】:

如下图所示,我想为从照片库中获取的图像实现“移动和缩放”功能。

如果您有任何想法或代码,请提供给我。

提前感谢。

【问题讨论】:

    标签: iphone objective-c photo-gallery


    【解决方案1】:

    看到这个answer by Jane Sales

    来自这个问题的答案Set dimensions for UIImagePickerController “move and scale” cropbox

    我推荐的解决方案是禁用图像选择器的编辑 并自己处理。例如,我把图像放在一个可滚动的, 可缩放的图像视图。在图像视图的顶部是一个固定位置 绘制用户看到的裁剪指示器的“裁剪指南视图”。 假设导向视图具有可见矩形的属性(部分 要保留)和边缘宽度(要丢弃的部分),您可以获得 像这样裁剪矩形。

    这是Re-sizing + UIImage的链接

    1)Link for Cropping a UIImage

    2) Another link

    3)More things to do with UIImage

    【讨论】:

    • 您提供的“Jane Sales 回答”链接使用 UIImage 的委托方法,但我想要照片库中的这种图像。那我该怎么做呢?
    【解决方案2】:

    请仅在其他人不工作时才通过此答案.... :)

    ZBar project 中有一些示例应用程序,这些应用程序采用了 Barcode 的图片。它允许移动和缩放图像。我没有看过代码。但您可以尝试作为最后的选择。

    【讨论】:

      【解决方案3】:

      这已经很晚了,但希望它会有所帮助。

      在 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
      
       }
      

      希望它对某人有所帮助!

      【讨论】:

        【解决方案4】:

        也许你正在寻找:

        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];
        }
        

        【讨论】:

          【解决方案5】:

          在 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)
          
          }
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-12-08
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多