【アンドロイド】ピットBitmap.createBitmapに研究ノート:Y +高必須<=源の高さ

[概要]円滑穴に、ビットマップ画面キャプチャの一部を使用する目的:Y +高必須<=源の高さ

【注意】スタートは、意味を理解Y <bitmap.getHeight()は常にログアウトしません。

          Baiduは、次の知っていました:

//源码
public static Bitmap createBitmap(Bitmap source, int x, int y, int width, int height) {
        throw new RuntimeException("Stub!");
    }
//y就是中间的参数y,height为参数height,必须满足:y+height<=bitmap.getHeight();bitmap为传入的bitmap

[]画面全体の画像から指定された領域の傍受の究極の目標

 private void getBitmap() throws Exception {
        View screenView = getWindow().getDecorView();
        screenView.setDrawingCacheEnabled(true);
        screenView.buildDrawingCache();

        //获取屏幕整张图片
        Bitmap bitmap = screenView.getDrawingCache();
        if (bitmap != null&&srcName!=null) {
            optionBox.setVisibility(View.GONE);
            //获取需要截图部分的在屏幕上的坐标(view的左上角坐标)
            int[] viewLocationArray = new int[2];
            view.getLocationOnScreen(viewLocationArray);

            //需要截取的长和宽
            int outWidth = screenView.getWidth();
            int outHeight = view.getHeight();
            if(viewLocationArray[1]+outHeight>bitmap.getHeight()&&viewLocationArray[1]+outHeight!=bitmap.getHeight()){
                outHeight=outHeight-(viewLocationArray[1]+outHeight-bitmap.getHeight());
                //Log.e("messIT","超出高度!outheight="+outHeight+",bitmapHeight="+bitmap.getHeight());
            }
            if(viewLocationArray[0]+outWidth>bitmap.getWidth()){
                outWidth=bitmap.getWidth()-viewLocationArray[0];
            }

            //从屏幕整张图片中截取指定区域
           //Log.e("messIT","bitmapHeight="+bitmap.getHeight()+"bitmapWidth="+bitmap.getWidth()+"--"+viewLocationArray[0]+","+viewLocationArray[1]+";"+outWidth+","+outHeight);
            bitmap = Bitmap.createBitmap(bitmap, viewLocationArray[0], viewLocationArray[1], outWidth, outHeight);

           File mFile=uriToFile(Uri.parse(srcName),this);
            FileOutputStream outputStream = new FileOutputStream(mFile);     //构建输出流
            bitmap.compress(Bitmap.CompressFormat.JPEG, 30, outputStream);  //compress到输出outputStream
            Toast.makeText(getApplicationContext(),"保存成功!",Toast.LENGTH_SHORT).show();

            Intent intent=new Intent();
            intent.putExtra("imgSrc",srcName);
            intent.putExtra("id",id);
            setResult(0001,intent);
            finish();

        }
    }

 

公開された44元の記事 ウォン称賛21 ビュー30000 +

おすすめ

転載: blog.csdn.net/gzyh_tech/article/details/86380538