我正在尝试从UIImageView
中提取图像数据,以便将其上传到Firebase存储。 但是,iv.image?。jpegdata()
返回nil。 我使用标准的Kingfisher库方法将图片从URL添加到UIImageView
。
下面是我的代码:
let url = URL(string: "https://pbs.twimg.com/profile_images/1229497999392477186/BMXkjVEJ_400x400.jpg")
let iv = UIImageView()
iv.kf.setImage(with: url)
if let png = iv.image?.jpegData(compressionQuality: .leastNormalMagnitude){
filePath.putData(png, metadata: nil){ metadata, error in
print("metadata: \(metadata) |error: \(error)") // doesn't print
}
}
知道iv.image?。jpegdata()
为什么是零吗? 我还尝试了iv.image?.pngdata()
,结果也是零。
正如@sh_khan所解释的,您需要等待async
调用完成。 解决办法如下:
let url = URL(string: "https://pbs.twimg.com/profile_images/1229497999392477186/BMXkjVEJ_400x400.jpg")
let iv = UIImageView()
iv.kf.setImage(with: url) { _ in
if let png = iv.image?.jpegData(compressionQuality: .leastNormalMagnitude){
filePath.putData(png, metadata: nil){ metadata, error in
print("metadata: \(metadata) |error: \(error)")
}
}
}
作为
iv.kf.setImage(with: url)
异步iv.image?。jpegdata()/iv.image?。pngdata()
将为零,直到从服务器加载图像
SetImage
不会自动更改Image
属性。 它可能需要从互联网下载图像,这需要时间。
幸运的是,您可以通过添加CompletionHandler
:
iv.kf.setImage(with: url, completionHandler: { result in
guard case .success(let imageResource) = result else {
// an error has occurred!
return
}
if let png = imageResource.image.jpegData(compressionQuality: .leastNormalMagnitude){
filePath.putData(png, metadata: nil){ metadata, error in
print("metadata: \(metadata) |error: \(error)") // doesn't print
}
}
})
问题内容: 当结果返回零时,是否有任何方法可以截断负号;使用十进制格式时? 上面的代码返回-0.0。有什么办法可以使它只返回0.0?但是,当结果为负数时,我想保留负号。 问题答案: 我不认为仅用一种方法就可以做到这一点,但是这种单线解决了这个问题: 它消除(其替换减号),如果它后面跟着0-n个字符的,所以这将任何结果,如类似的工作,或 这是一些测试代码: 输出(预期):
问题内容: The Go Playground上可用的程序读取 并产生一个错误 我了解是字符串的“零值”。我不明白为什么我不能分配给我的。 问题答案: 简单的答案是, 在语言规范中未将其定义为类型的有效值。 …但是也许您想要更长的答案? 是指针,接口,通道,切片,映射和函数类型的零值,它表示 未初始化的 状态。 考虑以下变量声明: 所有这些变量都有一个代表未初始化状态的值,这很自然。已被声明为指针
问题内容: 我编写了一个小 android 应用程序,该应用程序应显示智能手机的当前位置(最近的位置)。尽管我复制了示例代码,并尝试了其他几种解决方案,但每次似乎都有相同的错误。我的应用程序包含一个按钮。按下按钮应 记录 经度和纬度,但仅记录。 这是 MainActivity.java : 我还在清单文件中使用过。我真的很感谢一个解释的真正含义。 问题答案: 对于我的华为设备,以下帮助: 拨号:
问题内容: 我已经编写了以下代码,我要做的就是打印yes,如果传递的数字是1、0或2的字符串表示形式,而其他所有情况都为false: 我知道如何使预期的逻辑工作,但我只是想 需要 知道为什么它打印是任何数i传递给的raw_input。我希望答案尽可能详细,因为我不明白为什么它会失败,这对我来说似乎很Python 问题答案: 问题在于,对于Python,您的代码如下所示: 而且,由于任何非空字符串的
我在QuartzJobs实例上使用EntityManager遇到此问题: Java语言weblogic上的lang.NullPointerException。坚持不懈CICScopedImprovider。weblogic上的getEMForCurrentCIC(CICScopedImprovider.java:35)。坚持不懈事务实体管理器Proxy Impl。weblogic上的getPers
我被这个JavaSpring Boot问题困住了。我已经在loadUserByUsername方法的返回语句中填写了自动权限:this.get权限(user)。但是当我打印身份验证对象时,它说授予权限为空: UsernamePasswordAuthenticationToken[Principal=mark,Credentials=PROTECTED],Authenticated=true,Det
问题内容: 我想为自定义组合框中的值设置工具提示值。基本上,我的组合框包含一个姓名缩写的列表- 当他们将鼠标悬停在上方时,我希望它显示该姓名的全名。我的组合框基本上是JTable的一个单元格/列,它具有自己的TableCellRenderer和DefaultCellEditor。该列表是一个JList(模型中的内部类)-iv尝试直接设置’setToolTipText’方法,但这似乎不起作用。 这是
问题内容: df1 = pd.DataFrame(np.arange(15).reshape(5,3)) df1.iloc[:4,1] = np.nan df1.iloc[:2,2] = np.nan df1.dropna(thresh=1 ,axis=1) 似乎没有nan值已被删除。 如果我跑 为什么给出以下内容? 我只是不明白在这里脱粒。如果一列具有多个nan值,是否应删除该列? 问题答案: