如何减小来自 Web 服务的图像大小?
Posted
技术标签:
【中文标题】如何减小来自 Web 服务的图像大小?【英文标题】:How to reduce the image size coming from web services? 【发布时间】:2017-07-21 06:36:31 【问题描述】:在下面显示的图像中,我从 Web 服务获取图像并将其传递给表格视图,但是当向上和向下滚动时,图像大小正在增加,并且它在标签上重叠,并且我已经给出了约束,任何人都可以帮助我如何避免这种情况?
【问题讨论】:
加载前调整图片大小 如何调整图片大小? @Anbu.Karthik ***.com/questions/17018617/…。检查此项以调整图像大小。 任何人都可以在目标 c @VishalKalola 中发布 swift 的答案 objectivec2swift.com 将代码转换成swift。 【参考方案1】:嘿,您不需要调整图像大小。
-
首先在表格视图单元格中使用约束设置固定图像视图的高度宽度
第二次将imageview设置为aspectFit。
imageView.contentMode = UIViewContentModeScaleAspectFit;
像这样为您的图像视图添加约束
希望您能成功使用它,如果您对此有任何疑问,请评论将有所帮助
【讨论】:
之前我已经给出了高度限制,但是当我给定图像视图纵横比时,问题仍然存在,只需查看我的图像i.stack.imgur.com/30ioV.png @VamsiKrishna .. 还请设置您的 imageview 的固定宽度,因为它仍然在宽度部分自动调整大小。所以请固定宽度 请再试一次.. 删除所有单元格约束并先设置图像视图约束,然后再设置其他约束 i.stack.imgur.com/onYm4.png 这些是我对图像视图的限制 不要设置尾随空格..它的错误..约束超出循环。请参阅我在答案中附加的图片【参考方案2】:使用内容模式来适应图像是一个选项,但如果您想裁剪或调整大小或压缩图像,请检查以下代码。
致电let imageData = image.compressImage(rate: 0.5)
,然后您可以根据需要提供数据来写入图像。
func compressImage(rate: CGFloat) -> Data?
return UIImageJPEGRepresentation(self, rate)
或者如果你想裁剪图像,那么,
func croppedImage(_ bound: CGRect) -> UIImage?
guard self.size.width > bound.origin.x else
print("X coordinate is larger than the image width")
return nil
guard self.size.height > bound.origin.y else
print("Y coordinate is larger than the image height")
return nil
let scaledBounds: CGRect = CGRect(x: bound.x * self.scale, y: bound.y * self.scale, width: bound.w * self.scale, height: bound.h * self.scale)
let imageRef = self.cgImage?.cropping(to: scaledBounds)
let croppedImage: UIImage = UIImage(cgImage: imageRef!, scale: self.scale, orientation: UIImageOrientation.up)
return croppedImage
确保将上述方法添加到 UIImage 扩展中。
【讨论】:
【参考方案3】:我在表格视图单元格上放置了一个视图,然后我放置了所有元素并为其中的视图和元素提供了约束,然后我的问题已经减少并且在滚动时也可以正常工作,如下图所示。
这是这个屏幕的布局
【讨论】:
以上是关于如何减小来自 Web 服务的图像大小?的主要内容,如果未能解决你的问题,请参考以下文章