相关疑难解决方法(0)

Android:从图库加载的位图在ImageView中旋转

当我将媒体库中的图像加载到位图时,一切都运行正常,除了在垂直拿着手机时用相机拍摄的图片被旋转,以便我总是得到水平图片,即使它在画廊.为什么这样,我怎么能正确加载它?

android bitmap rotation gallery

132
推荐指数
8
解决办法
11万
查看次数

Android图像调整大小和保留EXIF数据(方向,旋转等)

如果您的Android应用使用设备的相机拍照,然后调整它的大小(这是很常见的,以减少上传大小),你可能没有意识到,这个调整操作的EXIF元数据.

这可能会导致问题,尤其是当相关设备依赖"方向"标签正确显示图像时.

不同的Android设备以不同的方式处理相机/图像旋转 - 我信赖的'Nexus One似乎总是在捕获后立即旋转图像,因此文件的本机内容在查看时始终是"直立的".然而,其他设备(特别是我测试中的三星手机)不会旋转图像文件的内容 - 而是设置exif'Orientation'标签.无论何时稍后显示图像,相关图像代码都应检测到方向"标签"的存在并适当地旋转图像.但是如果您对图像进行了任何位图处理并将其保存到新文件中,那么所有exif数据都将丢失.

除了Orientation数据之外,您还可能会丢失其他有价值的元数据,例如品牌/型号等.

这使我困惑了几个星期(图像在电话库中显示时显示正常,但随后到达我的服务器时方向错误且没有明显的元数据).我在这里添加这个自我提问来帮助别人.这篇博客文章非常有用:

http://vikaskanani.wordpress.com/2011/07/17/android-re-size-image-without-loosing-exif-information/

android exif image android-camera

49
推荐指数
3
解决办法
2万
查看次数

35
推荐指数
2
解决办法
7万
查看次数

如何在 kotlin 中压缩从图库中挑选的照片

我发现了很多关于该主题的问题,但没有一个有完整的工作示例。

我的情况很简单:

  1. 得到挑选的图像
  2. 压缩图像
  3. 将压缩图像上传到 Firebase 存储

我当前的代码(未压缩):

分段:

    override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
        super.onActivityResult(requestCode, resultCode, data)

        when (requestCode) {
            RC_PICK_IMAGE ->
                if (resultCode == Activity.RESULT_OK)
                    data?.data?.let { viewModel.updateUserPicture(it) }
        }
    }
Run Code Online (Sandbox Code Playgroud)

视图模型:

    fun updatePhotoUrl(photoUrl: Uri?): Task<Void> =
        Storage.uploadFile("/$PS_USERS/$uid", photoUrl)
                    .continueWithTask { ... }
Run Code Online (Sandbox Code Playgroud)

存储:(包装 Firebase 交互的对象)

    fun uploadFile(path: String, uri: Uri): Task<Uri> {
        val imageRef = storageRef.child(path)
        val uploadTask = imageRef.putFile(uri)

        // Return the task getting the download URL
        return uploadTask.continueWithTask { task ->
            if …
Run Code Online (Sandbox Code Playgroud)

android image-gallery image-compression kotlin imagepicker

1
推荐指数
1
解决办法
3941
查看次数