play_with_wolf 2017-04-20 07:01
浏览 1580

关于华为系列手机用代码截屏图片全黑的解决方案

吧opengl的渲染保存在一个 Bitmap 下

 int b[]=new int[w*h];
        int bt[]=new int[w*h];
        IntBuffer ib=IntBuffer.wrap(b);
        ib.position(0);
        gl.glReadPixels(x, y, w, h, GL10.GL_RGBA, GL10.GL_UNSIGNED_BYTE, ib);
        for(int i=0; i<h; i++)
        { 
              for(int j=0; j<w; j++)
              {
                  int pix=b[i*w+j];
                  int pb=(pix>>16)&0xff;
                  int pr=(pix<<16)&0x00ff0000;
                  int pix1=(pix&0xff00ff00) | pr | pb;
                  bt[(h-i-1)*w+j]=pix1;
              }
        }                
        Bitmap sb=Bitmap.createBitmap(bt, w, h, Config.ARGB_8888);

然后使用

      String uriStr = MediaStore.Images.Media.insertImage(context.getContentResolver(), bm, "", "");


        if(uriStr == null){
            return false;
        }

        String picPath  = getFilePathByContentResolver(this, Uri.parse(uriStr) );

        if(picPath == null) {
            return false;
        }

        ContentResolver contentResolver = context.getContentResolver();
        ContentValues values = new ContentValues(4);
        values.put(Images.Media.DATE_TAKEN, System.currentTimeMillis());
        values.put(Images.Media.MIME_TYPE, "image/png");
        values.put(Images.Media.ORIENTATION, 0);
        values.put(Images.Media.DATA, picPath);

        contentResolver.insert(Images.Media.EXTERNAL_CONTENT_URI, values);

结果发现保存的图片都是全黑的jpg(应该是png但是保存的是jpg),我用这个方法在其他品牌的手机上都能正常使用,请问华为系列贴别是荣耀系列有什么特殊方案来解决全黑么

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
    • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
    • ¥20 有关区间dp的问题求解
    • ¥15 多电路系统共用电源的串扰问题
    • ¥15 slam rangenet++配置
    • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
    • ¥15 ubuntu子系统密码忘记
    • ¥15 保护模式-系统加载-段寄存器
    • ¥15 电脑桌面设定一个区域禁止鼠标操作
    • ¥15 求NPF226060磁芯的详细资料