1

さて、/sdcardの代わりに画像を保存できるようにこのコードを微調整する方法を理解しようとしています。/sdcard/folder/Screenshot_xxxxx.jpgのような場所に保存したいと思います。

以下のコードがあります。

  case R.id.settings_capture:
                item.setIcon(R.drawable.capture);                   
                //Resize the webview to the height of the webpage
                int pageHeight = web.getContentHeight();
                LayoutParams browserParams = web.getLayoutParams();
                web.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, pageHeight));

                //Capture the webview as a bitmap
                web.setDrawingCacheEnabled(true);
                Bitmap bitmap = Bitmap.createBitmap(web.getDrawingCache());
                web.setDrawingCacheEnabled(false);

                //Create the filename to use
                String randomFilenamepart = String.valueOf(new SecureRandom().nextInt(1000000));
                String filename = Environment.getExternalStorageDirectory().toString() + "/ScreenShot_" + randomFilenamepart + ".jpg";

                File imageFile = new File(filename);
                //Stream the file out to external storage as a JPEG
                OutputStream fout = null;
                try {
                    fout = new FileOutputStream(imageFile);
                    bitmap.compress(Bitmap.CompressFormat.JPEG, 100, fout);
                    fout.flush();
                    fout.close();
                    Toast.makeText(WebViewClientDemoActivity.this, "Screen Capture Saved!\n\nImage Saved at location : /sdcard\n\nSaved As: ScreenShot_xxxxx.jpg", Toast.LENGTH_LONG).show();
                } catch (FileNotFoundException e) {
                    e.printStackTrace();
                    Toast.makeText(WebViewClientDemoActivity.this, "Problem with Capturing Image or Location to Store Image", Toast.LENGTH_SHORT).show();
                } catch (IOException e) {
                    e.printStackTrace();
                } finally {
                    web.setLayoutParams(browserParams);
                }

したがって、私の主な目標は、SDカード上のアプリ独自のフォルダーなど、特定の場所にこれを保存できる場所にコードを変更することです。

ヘルプ、コメント、ソースコードの例、外部リンクをありがとう。よろしくお願いします。

4

3 に答える 3

1

この行を更新して、目的のパスを含めます。

     File imageFile = new File(filename);

例えば

      File imageFile = new File("/sdcard/folder/"+filename);

コードを実行する前に、ファイルドライブがマウントされていることを確認してください。

于 2012-10-19T23:59:19.743 に答える
1

このコードを試してください:画像を特別なフォルダに保存し、異なる名前の画像を保存するには

            String root = Environment.getExternalStorageDirectory()
                    .toString();
            File myDir = new File(root + "/image_folder_name");
            myDir.mkdirs();
            Random generator = new Random();
            int n = 10000;
            n = generator.nextInt(n);
            String fname = "Image-" + n + ".jpg";
            file = new File(myDir, fname);

            Log.i(TAG, "" + file);

            if (file.exists())
                file.delete();
            try {
                FileOutputStream out = new FileOutputStream(file);
                bm.compress(Bitmap.CompressFormat.JPEG, 90, out);
                out.flush();
                out.close();

            } catch (Exception e) {
                e.printStackTrace();
            }
于 2012-10-20T04:31:57.400 に答える
1

これで私の問題は解決しました

 case R.id.settings_capture:
                item.setIcon(R.drawable.capture);                   
                //Resize the webview to the height of the webpage
                int pageHeight = web.getContentHeight();
                LayoutParams browserParams = web.getLayoutParams();
                web.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, pageHeight));

                //Capture the webview as a bitmap
                web.setDrawingCacheEnabled(true);
                Bitmap bitmap = Bitmap.createBitmap(web.getDrawingCache());
                web.setDrawingCacheEnabled(false);

               // final DateFormat DF = new SimpleDateFormat("yyyyMMdd_HHmmss_SSS");
                String out = new SimpleDateFormat("EEE_MMM_dd_yyyy hh:mm.s'.jpg'").format(new Date());

                //Create the filename to use
                String target_filename  = "FolderName-" + (out);
                        //+ ".jpg";
                try {
                    File targetDir = new File(Environment.getExternalStorageDirectory(), "/Enlighten");
                if (!targetDir.exists()){   
                    targetDir.mkdirs(); }
                    File file = new File(targetDir, target_filename);
                    FileOutputStream fos = new FileOutputStream(file);
                    bitmap.compress(Bitmap.CompressFormat.JPEG, 100, fos);
                    fos.flush();
                    fos.close();
                    Toast.makeText(WebViewClientDemoActivity.this, "Capture Saved!\n\nImage Stored @ /sdcard/Location", Toast.LENGTH_LONG).show();
                } catch (FileNotFoundException e) {
                    e.printStackTrace();
                    Toast.makeText(WebViewClientDemoActivity.this, "Problem Storing Image To: /sdcard/Location", Toast.LENGTH_LONG).show();
                } catch (IOException e) {
                    e.printStackTrace();
                } finally {
                    web.setLayoutParams(browserParams);
                }
                return true;
于 2012-10-23T07:50:21.823 に答える