ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Android-垂直向服务器发送图像时,尽管移动设备上的预览效果不错,但图像仍会旋转

2019-10-26 11:25:14  阅读:135  来源: 互联网

标签:image rotation android


在发送文件之前,手机上的预览看起来不错,但是一旦在服务器上收到并重新加载到移动设备上,便会旋转垂直图像.

public static File saveBitmapTemporarily(Bitmap finalBitmap, int extension, ExifInterface oldExif) {
    String root = Environment.getExternalStorageDirectory().toString();

    FileUtils.createFolder(new File(Environment.getExternalStorageDirectory() + BuildConfig.STORAGE_DIR));

    File myDir = new File(root + BuildConfig.STORAGE_DIR + "/");
    myDir.mkdirs();
    String fname;
    if (extension == IMAGE_FORMAT_JPG_JPEG) {
        fname = "file-reduced.jpg";
    } else {
        fname = "file-reduced.png";
    }
    File file = new File(myDir, fname);
    if (file.exists()) file.delete();
    try {
        FileOutputStream out = new FileOutputStream(file);
        if (extension == IMAGE_FORMAT_JPG_JPEG) {
            finalBitmap.compress(Bitmap.CompressFormat.JPEG, 90, out);
        } else {
            finalBitmap.compress(Bitmap.CompressFormat.PNG, 100, out);
        }
        out.flush();
        out.close();

    } catch (Exception e) {
        if (BuildConfig.DEBUG)
            e.printStackTrace();
    }

    return file;
}

解决方法:

欢迎使用Stack Overflow @kiketurry …在这里,您已完成解决此问题的工作.您应该将宽度和高度尺寸存储在照片的exif数据中,以便服务器知道如何调整其方向,但是只能在jpg中显示

if (extension == IMAGE_FORMAT_JPG_JPEG) {
    ExifInterface oldExif = null;
    try {
        oldExif = new ExifInterface(file.getAbsolutePath());
        ExifInterface newExif;
        newExif = new ExifInterface(file.getAbsolutePath());
        newExif.setAttribute("ImageLength", String.valueOf(finalBitmap.getHeight()));
        newExif.setAttribute("ImageWidth", String.valueOf(finalBitmap.getWidth()));
        if (oldExif != null) {
            String exifOrientation = oldExif.getAttribute(ExifInterface.TAG_ORIENTATION);
            if (exifOrientation != null) {
                newExif.setAttribute(ExifInterface.TAG_ORIENTATION, exifOrientation);
            }
        }
        newExif.saveAttributes();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

希望对您有所帮助.

标签:image,rotation,android
来源: https://codeday.me/bug/20191026/1936133.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有