Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/353.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 位图图像保存_Java - Fatal编程技术网

Java 位图图像保存

Java 位图图像保存,java,Java,这部分代码是创建位图图像的地方,位图位于画布上,从这一点来看,我希望能够保存在位图上创建的图像,我在MainActivity中有一个带有“保存”选项的下拉菜单 }我使用此代码保存使用画布绘制的任何图形,如fingerpaint或类似工具,希望对您的案例有用 将实例设置为全局 package com.example.save_file; import java.io.File; import java.io.FileOutputStream; import java.util.Random;

这部分代码是创建位图图像的地方,位图位于画布上,从这一点来看,我希望能够保存在位图上创建的图像,我在MainActivity中有一个带有“保存”选项的下拉菜单


}

我使用此代码保存使用画布绘制的任何图形,如fingerpaint或类似工具,希望对您的案例有用

将实例设置为全局

package com.example.save_file;

import java.io.File;
import java.io.FileOutputStream;
import java.util.Random;

import android.os.Bundle;
import android.os.Environment;
import android.app.Activity;
import android.view.Menu;
import android.view.MenuItem;
import android.os.Bundle;
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.Bitmap.CompressFormat;
import android.view.Menu;
//import android.gesture.GestureOverlayView;

public class MainActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        MyDraw d = new MyDraw (this);
        setContentView (d);
    }       

    @Override
    public boolean onCreateOptionsMenu(Menu menu) 
    {
          super.onCreateOptionsMenu (menu);
          MenuItem menu1 = menu.add(0, 0, Menu.NONE, "Filled Shape");
          MenuItem menu2 = menu.add(0, 1, Menu.NONE, "Outline Shape");
          MenuItem menu3 = menu.add(0, 2, Menu.NONE, "Rectangle");
          MenuItem menu4 = menu.add(0, 3, Menu.NONE, "Oval");
          MenuItem menu5 = menu.add(0, 4, Menu.NONE, "Save!");

          return true;
     }
     public boolean onOptionsItemSelected(MenuItem item) 
     {
          switch (item.getItemId()) 

          {
          case 0:
               MyApp.fill = 0;
               return true;
          case 1:
               MyApp.fill = 1;
               return true;
          case 2:
               MyApp.shape = 0;
               return true;
          case 3:
               MyApp.shape = 1;
               return true;
          default:
               return super.onOptionsItemSelected(item);

           case 4:

               bmp.setDrawingCacheEnabled(true);
                Bitmap bitmap = bmp.getDrawingCache();
                File root = Environment.getExternalStorageDirectory();
                File file = new
                    File(root.getAbsolutePath()+"/DCIM/Camera/img.jpg");
                try 
                {
                    file.createNewFile();
                    FileOutputStream ostream = new FileOutputStream(file);
                    bitmap.compress(CompressFormat.JPEG, 100, ostream);
                    ostream.close();
                } 
                catch (Exception e) 
                {
                    e.printStackTrace();
                } 
                   }
     }
并将其放在OnOptions ItemSelected()的示例中

更新: 检查您的模拟设备是否具有SD卡

提醒您必须将权限添加到清单

case 4:
    try {
        Bitmap bitmap = Bitmap.createBitmap(d.getWidth(),d.getHeight(), Bitmap.Config.ARGB_8888);
        Canvas canvas = new Canvas(bitmap);
        d.draw(canvas);
        File folder = new File(Environment.getExternalStorageDirectory()+ "/DCIM/Camera/");
        if (!folder.exists())
            folder.mkdirs();
        String fileName = Environment.getExternalStorageDirectory()+ "/DCIM/Camera/img.jpg"";
        if (new File(fileName).exists())
            new File(fileName).delete();
        OutputStream stream = new FileOutputStream(fileName);
        /*
         * Write bitmap to file using JPEG or PNG and 100% quality hint
         * for JPEG.
         */
        bitmap.compress(CompressFormat.JPEG, 100, stream);
        stream.close();
        } catch (Exception e) {
                // TODO Auto-generated catch block
                Toast.makeText(this, "Error: " + e.getMessage(),Toast.LENGTH_LONG).show();
        }
        break;


谢谢,我想从你对它添加的评论来看。不,是在MainActivity中,我给你的所有代码都不在myDraw中。Java我已经完成了所有这些,但是我只有一个模拟器和一个没有sd卡的HTC模拟器,你有你的模拟器吗?选择“保存”按钮后,会出现一条错误消息,错误:/storage/emulated/0/DCIM/Camera/img:open failed:EACCES(权限被拒绝)感谢您的帮助。我现在已经完成了所有这些,但是找不到文件,我已经进入DDMS模式,找到sd卡,但它似乎没有打开。感谢您的帮助:)使用adb shell,打开模拟器,在windows中打开cmd并键入:
adb shell
cd/mnt
ls
并搜索sdcard,可以是sdcard、extSdCard或其他,我支持sdcard,然后键入:
cd sdcard
ls
,它会将所有文件显示到sdcard中,转到DCIM/camera:
cd DCIM/camera
ls
,您的照片将出现在那里。这太棒了,我非常感谢您的帮助!谢谢
package com.example.save_file;

import java.io.File;
import java.io.FileOutputStream;
import java.util.Random;

import android.os.Bundle;
import android.os.Environment;
import android.app.Activity;
import android.view.Menu;
import android.view.MenuItem;
import android.os.Bundle;
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.Bitmap.CompressFormat;
import android.view.Menu;
//import android.gesture.GestureOverlayView;

public class MainActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        MyDraw d = new MyDraw (this);
        setContentView (d);
    }       

    @Override
    public boolean onCreateOptionsMenu(Menu menu) 
    {
          super.onCreateOptionsMenu (menu);
          MenuItem menu1 = menu.add(0, 0, Menu.NONE, "Filled Shape");
          MenuItem menu2 = menu.add(0, 1, Menu.NONE, "Outline Shape");
          MenuItem menu3 = menu.add(0, 2, Menu.NONE, "Rectangle");
          MenuItem menu4 = menu.add(0, 3, Menu.NONE, "Oval");
          MenuItem menu5 = menu.add(0, 4, Menu.NONE, "Save!");

          return true;
     }
     public boolean onOptionsItemSelected(MenuItem item) 
     {
          switch (item.getItemId()) 

          {
          case 0:
               MyApp.fill = 0;
               return true;
          case 1:
               MyApp.fill = 1;
               return true;
          case 2:
               MyApp.shape = 0;
               return true;
          case 3:
               MyApp.shape = 1;
               return true;
          default:
               return super.onOptionsItemSelected(item);

           case 4:

               bmp.setDrawingCacheEnabled(true);
                Bitmap bitmap = bmp.getDrawingCache();
                File root = Environment.getExternalStorageDirectory();
                File file = new
                    File(root.getAbsolutePath()+"/DCIM/Camera/img.jpg");
                try 
                {
                    file.createNewFile();
                    FileOutputStream ostream = new FileOutputStream(file);
                    bitmap.compress(CompressFormat.JPEG, 100, ostream);
                    ostream.close();
                } 
                catch (Exception e) 
                {
                    e.printStackTrace();
                } 
                   }
     }
MyDraw d;
@Override
public void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);
    d = new MyDraw (this);
    setContentView (d);
}  
case 4:
    try {
        Bitmap bitmap = Bitmap.createBitmap(d.getWidth(),d.getHeight(), Bitmap.Config.ARGB_8888);
        Canvas canvas = new Canvas(bitmap);
        d.draw(canvas);
        File folder = new File(Environment.getExternalStorageDirectory()+ "/DCIM/Camera/");
        if (!folder.exists())
            folder.mkdirs();
        String fileName = Environment.getExternalStorageDirectory()+ "/DCIM/Camera/img.jpg"";
        if (new File(fileName).exists())
            new File(fileName).delete();
        OutputStream stream = new FileOutputStream(fileName);
        /*
         * Write bitmap to file using JPEG or PNG and 100% quality hint
         * for JPEG.
         */
        bitmap.compress(CompressFormat.JPEG, 100, stream);
        stream.close();
        } catch (Exception e) {
                // TODO Auto-generated catch block
                Toast.makeText(this, "Error: " + e.getMessage(),Toast.LENGTH_LONG).show();
        }
        break;
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />