Android 根据View(布局) 生成图片(Bitmap)

来源:互联网 发布:机械行业转行it 编辑:程序博客网 时间:2024/06/05 07:05

下面生成图片的方法我会引用一个布局,布局我就不贴了,我说一些大家要主要的地方

布局:
引用了R.layout.ll_bitmap这个xml文件的布局
这个id (R.id.ll_layout)是最外面的一个布局 最好是LayoutInflater ,如果有其他的都布局请在外面写一个.要不然很容易出问题(RelativeLayout)

生成图片

    private Bitmap getBitmap() {            Bitmap bitmap = null;            LayoutInflater factorys = LayoutInflater.from(this);            final View textEntryView = factorys.inflate(R.layout.ll_bitmap, null);            View ll = textEntryView.findViewById(R.id.ll_layout);            TextView textView = (TextView) textEntryView.findViewById(R.id.tvbitmap_sfz);            textView.setTypeface(Typeface.createFromAsset(getAssets(), "fonts/OCRB10N.TTF"));            ll.setDrawingCacheEnabled(true);            ll.measure(View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED),                    View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED));            ll.layout(0, 0, ll.getMeasuredWidth(), ll.getMeasuredHeight());            bitmap = Bitmap.createBitmap(ll.getDrawingCache());            ll.setDrawingCacheEnabled(false);            return bitmap;        }

这个是上面的Bitmap存到sd卡里面 大家自己根据情况写

权限:<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />        private void saveCroppedImage(Bitmap bmp) {                File file = new File("/sdcard/myFolder");                if (!file.exists())                    file.mkdir();                file = new File("/sdcard/temp.jpg".trim());                String fileName = file.getName();                String mName = fileName.substring(0, fileName.lastIndexOf("."));                String sName = fileName.substring(fileName.lastIndexOf("."));                // /sdcard/myFolder/temp_cropped.jpg                String newFilePath = "/sdcard/myFolder" + "/" + mName + "_cropped" + sName;                file = new File(newFilePath);                try {                    file.createNewFile();                    FileOutputStream fos = new FileOutputStream(file);                    bmp.compress(CompressFormat.JPEG, 50, fos);                    fos.flush();                    fos.close();                } catch (IOException e) {                    // TODO Auto-generated catch block                    e.printStackTrace();                }            }
0 0
原创粉丝点击