gpt4 book ai didi

android - 无法解码流 java.io.FileNotFoundException/storage/emulated/0 打开失败 :ENOENT(No such file or directory

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:35:26 24 4
gpt4 key购买 nike

你好,我正在尝试保存在我的应用程序上拍摄的照片,但是当我尝试访问内存以放置数据时,出现错误

无法解码流 java.io.FileNotFoundException/storage/emulated/0 打开失败:ENOENT(没有这样的文件或目录)

这是我的代码。

            Camera.PictureCallback mPictureCallback = new Camera.PictureCallback() {

public void onPictureTaken(byte[] data, Camera camera) {
// TODO Auto-generated method stub
if (data != null){
//Intent mIntent = new Intent();
//mIntent.putExtra("image",imageData);

mCamera.stopPreview();
mPreviewRunning = false;
mCamera.release();

try{
BitmapFactory.Options opts = new BitmapFactory.Options();
Bitmap bitmap= BitmapFactory.decodeByteArray(data, 0, data.length,opts);
bitmap = Bitmap.createScaledBitmap(bitmap, 300, 300, false);
int width = bitmap.getWidth();
int height = bitmap.getHeight();
int newWidth = 300;
int newHeight = 300;

// calculate the scale - in this case = 0.4f
float scaleWidth = ((float) newWidth) / width;
float scaleHeight = ((float) newHeight) / height;

// createa matrix for the manipulation
Matrix matrix = new Matrix();
// resize the bit map
matrix.postScale(scaleWidth, scaleHeight);
// rotate the Bitmap
matrix.postRotate(-90);
Bitmap resizedBitmap = Bitmap.createBitmap(bitmap, 0, 0,
width, height, matrix, true);
Camera_local_db.image.setImageBitmap(resizedBitmap);

}catch(Exception e){
e.printStackTrace();
}
// StoreByteImage(mContext, imageData, 50,"ImageName");
//setResult(FOTO_MODE, mIntent);
setResult(585);
finish();
}
}
};


Camera.PictureCallback jpegCallback = new Camera. PictureCallback() {
@Override
public void onPictureTaken(byte[] data, Camera camera) {


File dir_image2 = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM),"dddd.jpg");
dir_image2.mkdirs(); //AGAIN CHOOSING FOLDER FOR THE PICTURE(WHICH IS LIKE A SURFACEVIEW
//SCREENSHOT)
if (!dir_image2.mkdirs()) {
Log.e(TAG, "Directory not created");
}


File tmpFile = new File(dir_image2,"TempGhost.jpg"); //MAKING A FILE IN THE PATH
//dir_image2(SEE RIGHT ABOVE) AND NAMING IT "TempGhost.jpg" OR ANYTHING ELSE
try {//SAVING
FileOutputStream fos = new FileOutputStream(tmpFile);
fos.write(data);
fos.close();
//grabImage();
} catch (FileNotFoundException e) {
Toast.makeText(getApplicationContext(),"Error",Toast.LENGTH_LONG).show();
} catch (IOException e) {
Toast.makeText(getApplicationContext(),"Error",Toast.LENGTH_LONG).show();
}
//String path = Environment.getExternalStoragePublicDirectory( Environment.DIRECTORY_MOVIES); File file = new File(path, "/" + dir_image2);
//String path = (Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM)+
// File.separator+"TempGhost.jpg");//<---

BitmapFactory.Options options = new BitmapFactory.Options();//<---
options.inPreferredConfig = Bitmap.Config.ARGB_8888;//<---
bmp1 = BitmapFactory.decodeFile(tmpFile.toString(), options);//<---
//THE LINES ABOVE READ THE FILE WE SAVED BEFORE AND CONVERT IT INTO A BitMap
Camera_local_db.image.setImageBitmap(bmp1);
//camera_image.setImageBitmap(bmp1); //SETTING THE BitMap AS IMAGE IN AN IMAGEVIEW(SOMETHING
//LIKE A BACKGROUNG FOR THE LAYOUT)
// TakeScreenshot();//CALLING THIS METHOD TO TAKE A SCREENSHOT

}
};

最佳答案

您需要写入外部存储,确保您添加了权限:

<manifest ...>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
...
</manifest>

检查外部存储是否可用于读写:

public boolean isExternalStorageWritable() {
String state = Environment.getExternalStorageState();
if (Environment.MEDIA_MOUNTED.equals(state)) {
return true;
}
return false;
}

使用公共(public)目录的根目录,而不是使用 Android 的根目录。

如果要将公共(public)文件保存在外部存储上,请使用 getExternalStoragePublicDirectory()

public File getAlbumStorageDir(String albumName) {
// Get the directory for the user's public pictures directory.
File file = new File(Environment.getExternalStoragePublicDirectory(
Environment.DIRECTORY_DCIM), albumName);
if (!file.mkdirs()) {
Log.e(LOG_TAG, "Directory not created");
}
return file;
}

如果您想保存您的应用的私有(private)文件,请使用 getExternalFilesDir()

public File getAlbumStorageDir(Context context, String albumName) {
// Get the directory for the app's private pictures directory.
File file = new File(context.getExternalFilesDir(
Environment.DIRECTORY_DCIM), albumName);
if (!file.mkdirs()) {
Log.e(LOG_TAG, "Directory not created");
}
return file;
}

有关链接的更多信息 http://developer.android.com/training/basics/data-storage/files.html

关于android - 无法解码流 java.io.FileNotFoundException/storage/emulated/0 打开失败 :ENOENT(No such file or directory,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25467007/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com