Kotlin,带有改造的图像上传需要很长时间

问题描述 投票:0回答:1

我正在尝试将图像从Android应用程序上传到laravel服务器。

我正在使用下面链接中的@waqas7 方法 https://github.com/waqas7/UploadImageOnServer

问题是,文件太大,需要很长时间。还有另一种上传文件的方法吗?就像将它的格式更改为编码和更小的格式 我主要是一名网络开发人员,所以如果你能详细回答那就太好了 谢谢

laravel android-studio kotlin retrofit
1个回答
0
投票

对于可能遇到此问题的任何人,我使用压缩方法来减小尺寸

private fun compressImage(sourceImageFile: File): File? {
    val destinationFile = context?.getDestinationFileForImage()
    try {
        val timeToExecute =
            destinationFile?.let { CompressImage.compressImage(sourceImageFile, it) }
    } catch (e: Exception) {
    }
    return destinationFile
}

object CompressImage {

fun compressImage(sourceFile: File, destinationFile:File):Long{
    return measureTimeMillis {
        val currentBitmap = BitmapFactory.decodeFile(sourceFile.absolutePath)
        currentBitmap.compress(
            Bitmap.CompressFormat.JPEG,
            CompressFileUtils.COMPRESS_QUALITY,
            FileOutputStream(destinationFile)
        )
    }
}
}

你也失去了方向,所以你需要在压缩图像之前保存它

    val attributes = arrayOf(
        ExifInterface.TAG_DATETIME,
        ExifInterface.TAG_DATETIME_DIGITIZED,
        ExifInterface.TAG_EXPOSURE_TIME,
        ExifInterface.TAG_FLASH,
        ExifInterface.TAG_FOCAL_LENGTH,
        ExifInterface.TAG_GPS_ALTITUDE,
        ExifInterface.TAG_GPS_ALTITUDE_REF,
        ExifInterface.TAG_GPS_DATESTAMP,
        ExifInterface.TAG_GPS_LATITUDE,
        ExifInterface.TAG_GPS_LATITUDE_REF,
        ExifInterface.TAG_GPS_LONGITUDE,
        ExifInterface.TAG_GPS_LONGITUDE_REF,
        ExifInterface.TAG_GPS_PROCESSING_METHOD,
        ExifInterface.TAG_GPS_TIMESTAMP,
        ExifInterface.TAG_MAKE,
        ExifInterface.TAG_MODEL,
        ExifInterface.TAG_ORIENTATION,
        ExifInterface.TAG_SUBSEC_TIME,
        ExifInterface.TAG_WHITE_BALANCE
    )

        val oldExif = ExifInterface(file)
        oldExif.getAttribute(attributes[16])
        exifData1 = oldExif.getAttribute(attributes[16])
© www.soinside.com 2019 - 2024. All rights reserved.