2016-04-19 21 views
0

私たちは、ユーザーが画像をアップロードし、その上にテキストを書き込んだり、新しい画像をそのテキストと共に保存することを可能にするアプリケーションを作りようとしています。Androidスタジオのギャラリーにテキストをオーバーレイしてイメージを保存するにはどうすればよいですか?

現在の実装では、ImageViewを使用して画像を保持し、次にTextViewsを使用して上書きします。

イメージ全体を保存するにはどうすればよいでしょうか?以下は現在のコードです。

ありがとうございました! :)

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_generator); 

    final EditText topTextInput = (EditText)findViewById(R.id.editTopText); 
    final EditText bottomTextInput = (EditText)findViewById(R.id.editBottomText); 
    final TextView topTextView = (TextView)findViewById(R.id.topText); 
    final TextView bottomTextView = (TextView)findViewById(R.id.bottomText); 

    imageView = (ImageView)findViewById(R.id.imageView2); 
    Button pickImage = (Button) findViewById(R.id.button2); 

    pickImage.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View view) { 
      Intent photoPickerIntent = new Intent(Intent.ACTION_PICK); 
      photoPickerIntent.setType("image/*"); 
      startActivityForResult(photoPickerIntent, SELECT_PHOTO); 
     } 
    }); 

    topTextInput.addTextChangedListener(new TextWatcher() { 
     @Override 
     public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) { 

     } 

     @Override 
     public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) { 
      topTextView.setText(topTextInput.getText() + ""); 
     } 

     @Override 
     public void afterTextChanged(Editable editable) { 

     } 
    }); 

    bottomTextInput.addTextChangedListener(new TextWatcher() { 
     @Override 
     public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) { 

     } 

     @Override 
     public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) { 
      bottomTextView.setText(bottomTextInput.getText() + ""); 
     } 

     @Override 
     public void afterTextChanged(Editable editable) { 

     } 
    }); 
} 

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent imageReturnedIntent) { 
    super.onActivityResult(requestCode, resultCode, imageReturnedIntent); 

    switch(requestCode) { 
     case SELECT_PHOTO: 
      if(resultCode == RESULT_OK){ 
       try { 
        final Uri imageUri = imageReturnedIntent.getData(); 
        final InputStream imageStream = getContentResolver().openInputStream(imageUri); 
        final Bitmap selectedImage = BitmapFactory.decodeStream(imageStream); 
        imageView.setImageBitmap(selectedImage); 
        imageView.setScaleType(ImageView.ScaleType.FIT_XY); 
       } catch (FileNotFoundException e) { 
        e.printStackTrace(); 
       } 

      } 
    } 
} 
+0

この質問が既に尋ねたと回答されている[こちら](https://でのstackoverflow .com/questions/2174875/image-on-canvas-to-jpeg-file)。 –

+0

ええ、6年前...完全に廃止されました。 –

答えて

0

使用この:

public Bitmap takeScreenshot() { 
     View rootView = getView(); 
     rootView.setDrawingCacheEnabled(true); 
     rootView.buildDrawingCache(true); 
     Bitmap b1 = Bitmap.createBitmap(rootView.getDrawingCache(true)); 
     rootView.setDrawingCacheEnabled(false); // clear drawing cache 
     return b1; 
    } 

や画像へのビットマップを保存するには:

public void saveBitmap(Bitmap bitmap) { 
    if(bitmap==null){ 
     return; 
    } 
    File imagePath1 = new File(savePath,"screenshot.jpg"); 
    FileOutputStream fos; 
    try { 
     fos = new FileOutputStream(imagePath1); 
     bitmap.compress(Bitmap.CompressFormat.JPEG, 100, fos); 
     fos.flush(); 
     fos.close(); 
    } catch (IOException e) { 
     Log.e("GREC", e.getMessage(), e); 
    } 
} 
関連する問題