save multiple image views as a single file

江枫思渺然 提交于 2019-12-25 04:45:12

问题


In my application , one Relative Layout has totally three ImageView()'s . I want to save all the three imageviews as a single .png file to the device storage on a single button click.

My code:

Layout XML :

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/make" >

 <ImageView
     android:id="@+id/imageView1"
     android:layout_width="wrap_content"
     android:layout_height="300dp"
     android:layout_above="@+id/button1"
     android:layout_alignParentLeft="true"
     android:layout_alignParentRight="true"
     android:layout_alignParentTop="true"
     android:src="@drawable/am0" />

<Button
    android:id="@+id/button1"
    android:layout_width="wrap_content"
    android:layout_height="60dp"
    android:layout_alignParentBottom="true"
    android:layout_alignParentLeft="true"
    android:layout_alignParentRight="true"
    android:text="Save Meme"
    android:textStyle="bold"
    android:textColor="@color/wt" />

<ImageView
    android:id="@+id/top"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentRight="true"
    android:layout_alignParentTop="true"
    android:layout_marginTop="64dp"
    android:src="@drawable/ic_launcher" />

<ImageView
    android:id="@+id/down"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBottom="@+id/imageView1"
    android:layout_alignParentLeft="true"
    android:layout_alignParentRight="true"
    android:layout_marginBottom="74dp"
    android:src="@drawable/ic_launcher" />

Activity Code :

protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);


    setContentView(R.layout.sm);

    main1 = (ImageView) findViewById(R.id.imageView1);
    top = (ImageView) findViewById(R.id.top);
    down = (ImageView) findViewById(R.id.down);

    Bundle rec = getIntent().getExtras();

    int rec1 = getIntent().getExtras().getInt("ams0");
    Bitmap bmp = (Bitmap) rec.getParcelable("bm0");
    Bitmap bmp1 = (Bitmap) rec.getParcelable("bm1");


    main1.setImageResource(rec1);
    top.setImageBitmap(bmp);
    down.setImageBitmap(bmp1);


}

How do I save the image views as a file ?


回答1:


Try using a Сanvas

Bitmap mainBitmap = ((BitmapDrawable)main1.getDrawable()).getBitmap().copy(Bitmap.Config.ARGB_8888, true); 
Canvas canvas = new Canvas(mainBitmap);
canvas.drawBitmap(bmp.copy(Bitmap.Config.ARGB_8888, true), 1, 1, null);
canvas.drawBitmap(bmp1.copy(Bitmap.Config.ARGB_8888, true), 1, 1, null);

OutputStream os = null;
try {
      os = new FileOutputStream("/sdcard/DCIM/Camera/myImages.png");
      mainBitmap.compress(Bitmap.CompressFormat.PNG, 50, os);
} catch (IOException e) {
      e.printStackTrace();
}


来源:https://stackoverflow.com/questions/27878619/save-multiple-image-views-as-a-single-file

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!