【问题标题】:Load image as a File将图像加载为文件
【发布时间】:2017-06-15 22:39:19
【问题描述】:

如何将图像“.jpg”作为文件加载?

确切地说,此文件是使用以下方法保存的:

public static void saveFile(Context context, Bitmap bitmap, String picName) {
    FileOutputStream fileOutputStream;
    try {
        fileOutputStream = context.openFileOutput(picName, Context.MODE_PRIVATE);
        bitmap.compress(Bitmap.CompressFormat.JPEG, 30, fileOutputStream);
        fileOutputStream.close();
    } catch (FileNotFoundException e) {
        Log.d(TAG, "file not found");
        e.printStackTrace();
    } catch (IOException e) {
        Log.d(TAG, "io exception");
        e.printStackTrace();
    }

}

所以我只有名字作为参考

我试过了:

public static Bitmap loadBitmap(Context context, String picName) {

    Bitmap bitmap = null;
    FileInputStream fileInputStream;
    try {
        fileInputStream = context.openFileInput(picName);
        bitmap = BitmapFactory.decodeStream(fileInputStream);
        fileInputStream.close();

    } catch (FileNotFoundException e) {
        Log.d(TAG, "file not found");
        e.printStackTrace();
    } catch (IOException e) {
        Log.d(TAG, "io exception");
        e.printStackTrace();
    }
    return bitmap;
}

它可以工作,但我需要它是一个文件

【问题讨论】:

    标签: java android image file bitmap


    【解决方案1】:

    如果您希望使用File 对象,我建议您始终如一地这样做。使用getFilesDir()getCacheDir() 作为基础来构建一个File 的你想要文件去的地方(例如,new File(getCacheDir(), picName))。然后,将FileOutputStreamFileInputStream 用于您的I/O,替换openFileOutput()openFileInput()

    【讨论】:

    • 该文件是来自相机意图的图片。我需要在 ImageView 中显示它/减小它的大小。我只需要它作为文件通过 POST 请求发送它。到时候获取位图再转换不是更高效吗?
    • @An-droid:“到时候获取位图并进行转换不是更有效率吗?” -- 抱歉,我不明白你的意思。
    • 我的意思是,使用位图进行显示并在我需要在 post 请求中发送时将其转换为文件不是更有效吗?
    • @An-droid:如果你使用EXTRA_OUTPUTACTION_IMAGE_CAPTURE,那么你已经有了一个文件,无论EXTRA_OUTPUT 说放在哪里。创建 second 文件的效率会低于不创建第二个文件。如果您没有使用EXTRA_OUTPUT,并且您正在使用来自getParcelableExtra("data") 的缩略图Bitmap,您可能会延迟创建File,直到需要它,特别是如果用户可能不选择上传文件(例如, 按 BACK 而不是单击上传照片操作栏项)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-08-01
    • 2013-09-04
    • 1970-01-01
    • 2012-01-25
    • 1970-01-01
    • 1970-01-01
    • 2020-09-02
    相关资源
    最近更新 更多