bitmap = createBitmap(relativeLayout); WXImageObject imgObj =new WXImageObject(bitmap); //创建WXMediaMessage对象,并包装创建WXImageObject对象 WXMediaMessage msg =new WXMediaMessage(); msg.mediaObject= imgObj; //压缩图像 Bitmap thumbBmp = Bitmap.createScaledBitmap(bitmap,120,150, true); bitmap.recycle(); //释放图像所占用的内存资源 msg.thumbData= bmpToByteArray(thumbBmp, true); SendMessageToWX.Req req = new SendMessageToWX.Req(); req.transaction = buildTransction("img"); //发送的内容或者对象 req.message = msg; req.scene = SendMessageToWX.Req.WXSceneSession; wxapi.sendReq(req);
public class MainActivity extends AppCompatActivity implements View.OnClickListener{ private Button btnCommon; private Button btnScroll; private Button btnInflate; private RelativeLayout container; private RelativeLayout llScroll; private ImageView imageView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btnCommon = findViewById(R.id.btn_common); btnScroll = findViewById(R.id.btn_scroll); btnInflate = findViewById(R.id.btn_inflate); container = findViewById(R.id.container); llScroll = findViewById(R.id.ll_scroll); imageView = findViewById(R.id.img); btnCommon.setOnClickListener(this); btnScroll.setOnClickListener(this); btnInflate.setOnClickListener(this); } @Override public void onClick(View v) { Bitmap bitmap=null; switch (v.getId()) { case R.id.btn_common: bitmap = createBitmap(llScroll); imageView.setImageBitmap(bitmap); break; case R.id.btn_scroll: bitmap = createBitmap2(llScroll); imageView.setImageBitmap(bitmap); break; case R.id.btn_inflate: View view = LayoutInflater.from(this).inflate(R.layout.view_inflate, null, false); bitmap = createBitmap3(view, getScreenWidth(), getScreenHeight()); break; default: break; } saveBitmap(bitmap); } private Bitmap createBitmap(View view) { view.buildDrawingCache(); Bitmap bitmap = view.getDrawingCache(); return bitmap; } public Bitmap createBitmap2(View v) { Bitmap bitmap = Bitmap.createBitmap(v.getWidth(), v.getHeight(), Bitmap.Config.ARGB_8888); Canvas c = new Canvas(bitmap); c.drawColor(Color.WHITE); v.draw(c); return bitmap; } public Bitmap createBitmap3(View v, int width, int height) { //测量使得view指定大小 int measuredWidth = View.MeasureSpec.makeMeasureSpec(width, View.MeasureSpec.EXACTLY); int measuredHeight = View.MeasureSpec.makeMeasureSpec(height, View.MeasureSpec.EXACTLY); v.measure(measuredWidth, measuredHeight); //调用layout方法布局后,可以得到view的尺寸大小 v.layout(0, 0, v.getMeasuredWidth(), v.getMeasuredHeight()); Bitmap bitmap = Bitmap.createBitmap(v.getWidth(), v.getHeight(), Bitmap.Config.ARGB_8888); Canvas c = new Canvas(bitmap); c.drawColor(Color.WHITE); v.draw(c); return bitmap; } private void saveBitmap(Bitmap bitmap) { FileOutputStream fos; try { File root = Environment.getExternalStorageDirectory(); File file = new File(root, "test.png"); fos = new FileOutputStream(file); bitmap.compress(Bitmap.CompressFormat.PNG, 90, fos); fos.flush(); fos.close(); } catch (Exception e) { e.printStackTrace(); } } public int getScreenHeight() { return getResources().getDisplayMetrics().heightPixels; } public int getScreenWidth() { return getResources().getDisplayMetrics().widthPixels; } public void saveBitmapFile(Bitmap bitmap){ File file=new File("/mnt/sdcard/pic/01.jpg"); try { BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(file)); bitmap.compress(Bitmap.CompressFormat.JPEG, 100, bos); bos.flush(); bos.close(); } catch (IOException e) { e.printStackTrace(); } } }