Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将捕获的图像保存为JPEG的PNG格式_Java_Android_Image - Fatal编程技术网

Java 将捕获的图像保存为JPEG的PNG格式

Java 将捕获的图像保存为JPEG的PNG格式,java,android,image,Java,Android,Image,我是Android新手。我正在Eclipse中使用一个摄像头应用程序。捕获的图像存储到应用程序文件夹(内部存储器)。图像存储为JPEG格式,但我希望它保存为PNG格式。但是,我不想将映像保存在外部存储目录上 这是我的密码: SimpleDateFormat dateFormat = new SimpleDateFormat("yyyymmddhhmmss"); String date = dateFormat.format(new Date()); String

我是Android新手。我正在Eclipse中使用一个摄像头应用程序。捕获的图像存储到应用程序文件夹(内部存储器)。图像存储为JPEG格式,但我希望它保存为PNG格式。但是,我不想将映像保存在外部存储目录

这是我的密码:

SimpleDateFormat dateFormat = new SimpleDateFormat("yyyymmddhhmmss");
        String date = dateFormat.format(new Date());
        String photoFile = "Picture_" + date + ".JPEG";

        String filename = pictureFileDir.getPath() + File.separator + photoFile;
        File pictureFile = new File(filename);    


        try {
          FileOutputStream fos = new FileOutputStream(pictureFile);
          bmp.compress(Bitmap.CompressFormat.PNG,100,fos);

          fos.flush();
          // fos.write(data);
          fos.close();
          Toast.makeText(context, "New Image saved:" + photoFile,Toast.LENGTH_LONG).show();
        } catch (Exception error) {
        //Log.d(IntersaActivity.DEBUG_TAG, "File" + filename + "not saved: "+ error.getMessage());
      Toast.makeText(context, "Image could not be saved.",
          Toast.LENGTH_LONG).show();
    }
  }

  private File getDir() {
      String filepath = "MyFileStorage";
      ContextWrapper contextWrapper = new ContextWrapper(context);
        File sdDir = contextWrapper.getDir(filepath, Context.MODE_PRIVATE);
    //File sdDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);
    return new File(sdDir, "CameraAPIDemo");
  }
} 
使用

并将文件名的扩展名设置为PNG

希望能有帮助

编辑:调用此方法的总代码

SimpleDateFormat dateFormat = new SimpleDateFormat("yyyymmddhhmmss");
String date = dateFormat.format(new Date());
String photoFile = "Picture_" + date + ".PNG";

String filename = pictureFileDir.getPath() + File.separator + photoFile;   

try {
    savePicture(filename, bmp, context);
    Toast.makeText(context, "New Image saved:" + photoFile,Toast.LENGTH_LONG).show();
} catch (Exception error) {
    Toast.makeText(context, "Image could not be saved.", Toast.LENGTH_LONG).show();
}

不要使用
.JPEG
扩展名,只需将其更改为
.PNG
,您的图像将保存为PNG<代码>字符串photoFile=“Picture”+日期+”.PNG”更改这一行。@Luiggi Mendoza:谢谢你的回复。事实上,我将这一行更改为“.PNG”。它将作为“.PNG”存储在内部存储器中,当我用Paint打开图片时,只有在单击“另存为”按钮时才显示JPEG格式。(通常是一些“.PNG”图像以paint打开意味着,当我单击SaveAs按钮时,它显示PNG格式。)这是什么解决方案。提前谢谢。很抱歉,我没有在这里发布任何类型的答案或建议=\这是默认的绘画行为,它总是以JPEG格式打开PNG图像。@Grishu、@Luiggi Mendoza、@Sri Harsha Chilapati:谢谢您的回复。如果我从浏览器下载PNG图像并使用绘画打开,然后单击“另存为”按钮,它在SaveAs类型中显示PNG格式。但是,如果我从内存下载捕获的图像(.PNG)并用paint打开,然后单击SaveAs,则表示它在SaveAs类型中显示JPEG格式。这是为什么?提前感谢。我已更新了上面的代码。它显示错误(局部变量oos可能尚未初始化).但是我初始化了oos的空值并捕获了图像,因此它无法将图像存储在应用程序文件夹(内部存储)中。提前感谢。
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyymmddhhmmss");
String date = dateFormat.format(new Date());
String photoFile = "Picture_" + date + ".PNG";

String filename = pictureFileDir.getPath() + File.separator + photoFile;   

try {
    savePicture(filename, bmp, context);
    Toast.makeText(context, "New Image saved:" + photoFile,Toast.LENGTH_LONG).show();
} catch (Exception error) {
    Toast.makeText(context, "Image could not be saved.", Toast.LENGTH_LONG).show();
}