【问题标题】:Swift - force square photo from library and cameraSwift - 从库和相机中强制拍摄方形照片
【发布时间】:2016-04-02 16:58:06
【问题描述】:

我正在构建一个应用程序,我需要强制用户上传方形图片(就像 Instagram 一样),但是我想避免从头开始编程界面,因为我们时间紧迫。

请务必注意,用户必须选择他/她想要显示的图像的哪一部分,因此以编程方式裁剪图像而不询问用户是不可能的。

我已经设法通过相机让它工作,但是通过库我似乎无法强迫用户使用方形图像。这是我的代码:

func presentGallery(){
    // from library
    picker.allowsEditing = true
    picker.sourceType = UIImagePickerControllerSourceType.PhotoLibrary
    presentViewController(picker, animated: true, completion: nil)
}

然后在我的 imagepickercontroller 上:

    var chosenImage = info[UIImagePickerControllerEditedImage] as! UIImage 

但是我没有得到想要的结果。如果“最小缩放”是显示图像 100% 的高度,或者我可以在图像的顶部和底部添加白色/黑色背景,那会很好。

问题来了:

而不是这样的:

我的应用需要从 iOS7 开始运行。

【问题讨论】:

  • 您可以使用第一个扩展来返回一个方形图像。如果它不能解决您的问题,请告诉我,以便我重新提出您的问题。
  • @LeoDabus 感谢您的帮助,但是使用您的代码,图像会被裁剪。显示用户想要的所有信息很重要。这就是为什么我需要这两件事中的任何一个:1)将“像素”添加到图像的顶部/底部或左侧/右侧,以使其成为正方形 2)强制用户从图库查看器中选择正方形图片(我上传的第二张图片)
  • 要使相机中的图像成为正方形,您总是需要裁剪它,无论如何我已经重新打开了这个问题。
  • 我已经设法让它使用以下代码: UIGraphicsBeginImageContextWithOptions(CGSize(width: maxDimension, height: maxDimension), false, 0.0); image.drawInRect(CGRectMake(0, image.size.width/2-image.size.height/2, image.size.width, image.size.height)) newImage = UIGraphicsGetImageFromCurrentImageContext() UIGraphicsEndImageContext() return newImage 但是现在我'想为矩形添加白色背景,这就是我所缺少的。

标签: ios swift camera gallery square


【解决方案1】:

如果他们从图书馆挑选图片,你应该做一些检查以确保图片是方形的。

获得图像后(使用imagePickerController didFinishPickingMediaWithInfo),然后使用[info objectForKey:UIImagePickerControllerOriginalImage]; 获得图像。完成此操作后,执行检查:

if (image.size.height != image.size.width) // Show some alert

更好的解决方案可能是创建一个视图,允许用户选择任何照片,然后选择照片的正方形部分导入您的应用,就像 Instagram 一样。

【讨论】:

  • 恐怕不是一个非常用户友好的方法。选择图像后显示警报感觉不对,说您选择的图像错误
  • 我用另一个更用户友好的建议更新了我的答案,比如 Instagram 所做的!
  • 感谢 Steven 的回复,是的,我正在寻找您添加的内容,但是我需要一些帮助来实现它(基本上我在我的问题中说我需要 instagram 提供的东西哈哈)跨度>
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多