html2canvas 截取 html 生成图片空白问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了html2canvas 截取 html 生成图片空白问题相关的知识,希望对你有一定的参考价值。

参考技术A 2 .iOS 原生从相册选择的图片渲染空白的问题

会调用

通过这个方法 就把不识别的地址换成了这个固定的 base64 然后绘制的图片就会是空白

拍照+相册+截取图片

一、拍照+截取

拍照:

 mStorageDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM);//获取存储器的专门放图片的区域
 uri = Uri.fromFile(new File(mStorageDir.getPath()+System.currentTimeMillis()+".png")); //在该区域创建文件,并转换为uri格式
 Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
                //将图片处理的数据传递到uri上
                intent.putExtra(MediaStore.EXTRA_OUTPUT,uri);
                //在Dialog中,必须这样使用,才能回调到Activity上
                ((Activity)mContext).startActivityForResult(intent,REQUST_PHOTO);
拍照

拍照完之后回调

Activity.onActivityResult()

if(requestCode == ImageDialog.REQUST_PHOTO){
     //截取图片   第一个参数就是刚才的uri
   cropImageUri(ImageDialog.uri,800,600,REQUST_CRAP);
} 

 private void cropImageUri(Uri uri, int outputX, int outputY, int requestCode){
        Intent intent = new Intent("com.android.camera.action.CROP");
        intent.setDataAndType(uri, "image/*");
        intent.putExtra("crop", "true");
        intent.putExtra("aspectX", 2);
        intent.putExtra("aspectY", 1);
        intent.putExtra("outputX", outputX);
        intent.putExtra("outputY", outputY);
        intent.putExtra("scale", true);
        intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);
        intent.putExtra("return-data", false);
        intent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString());
        intent.putExtra("noFaceDetection", true); // no face detection
        //发现截取完图片,还需要再次回调
        startActivityForResult(intent, requestCode);
    }
View Code

在从onActivityResult()中保存图片,到地址

else if (requestCode == REQUST_CRAP){
     Bitmap bitmap = decodeUriAsBitmap(data.getData());
     imageView.setImageBitmap(bitmap);
    }




private Bitmap decodeUriAsBitmap(Uri uri){
        Bitmap photo = null;
        Uri photoUri = uri;
        if (photoUri != null) {
            //根据uri地址获取Bitmap
            photo = BitmapFactory.decodeFile(photoUri.getPath());
        }
        Log.d(TAG,photoUri.getPath());
        if (photo == null) {
            //将图片生成jpeg
            ByteArrayOutputStream stream = new ByteArrayOutputStream();
            photo.compress(Bitmap.CompressFormat.JPEG, 100, stream);
        }
        return photo;
    }
View Code

二、从相册中选择+截取

   Intent intent = new Intent(Intent.ACTION_GET_CONTENT, null);
              //表明选择的是image类型
                intent.setType("image/*");

                intent.putExtra("crop", "true");
                //截取的比例
                intent.putExtra("aspectX", 2);

                intent.putExtra("aspectY", 1);
               //输出的像素
                intent.putExtra("outputX", 600);

                intent.putExtra("outputY", 300);

                intent.putExtra("scale", true);

                intent.putExtra("return-data", false);

                intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);

                intent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString());

                intent.putExtra("noFaceDetection", true); // no face detection

                ((Activity)mContext).startActivityForResult(intent, REQUEST_GALLERY);        
View Code

之后的步骤跟上面相同

以上是关于html2canvas 截取 html 生成图片空白问题的主要内容,如果未能解决你的问题,请参考以下文章

使用html2canvas js 截取网页图片下载

在Vue项目中使用html2canvas生成页面截图并上传

html2canvas截取不到地图

介绍两个关于生成截图图片的js库:html2canvas

移动端生成分享海报图片-easyqrcode+html2canvas

html2canvas 生成图片 生成一半有图一半空白 是啥原因导致