machine_learner 2016-08-01 11:43 采纳率: 0%
浏览 1576
已结题

安卓底层Camera中图片自动压缩的问题

问题:我用系统底层的相机拍照,但是拍出来的照片压缩很严重,

    找了很久也没解决的办法,求大神指点。

自定义相机中,我调用这句:
mCamera.takePicture(null,null, new PictureCallback() {// 查看源码是这样:
public final void takePicture(ShutterCallback shutter, PictureCallback raw, PictureCallback jpeg) {
takePicture(shutter, raw, null, jpeg);
}// 继续调用这个:
public final void takePicture(ShutterCallback shutter, PictureCallback raw,
PictureCallback postview, PictureCallback jpeg) {
mShutterCallback = shutter;
mRawImageCallback = raw;
mPostviewCallback = postview;
mJpegCallback = jpeg;

    // If callback is not set, do not send me callbacks.
    int msgType = 0;
    if (mShutterCallback != null) {
        msgType |= CAMERA_MSG_SHUTTER;
    }
    if (mRawImageCallback != null) {
        msgType |= CAMERA_MSG_RAW_IMAGE;
    }
    if (mPostviewCallback != null) {
        msgType |= CAMERA_MSG_POSTVIEW_FRAME;
    }
    if (mJpegCallback != null) {
        msgType |= CAMERA_MSG_COMPRESSED_IMAGE;//            这句话对图片进行压缩吧,但是我的代码中mJpegCallback并不是null啊,找了很久都没人谈这个问题,
    }


    native_takePicture(msgType);
    mFaceDetectionRunning = false;
}
  • 写回答

3条回答 默认 最新

  • qq_26337701 2016-08-01 14:32
    关注

    public ByteArrayOutputStream compress(Bitmap bitmap) {
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);// 质量压缩方法,这里100表示不压缩,把压缩后的数据存放到baos中
    int options = 99;
    while (baos.toByteArray().length / 1024 > maxSize) { // 循环判断如果压缩后图片是否大于100kb,大于继续压缩
    options -= 3;// 每次都减少10
    // 压缩比小于0,不再压缩
    if (options < 0) {
    break;
    }
    Log.i(TAG, baos.toByteArray().length / 1024 + "");
    baos.reset();// 重置baos即清空baos
    bitmap.compress(Bitmap.CompressFormat.JPEG, options, baos);// 这里压缩options%,把压缩后的数据存放到baos中
    }
    return baos;
    }

        通过这种方式压缩,调整,可以适当保真
    
    评论

报告相同问题?

悬赏问题

  • ¥15 乘性高斯噪声在深度学习网络中的应用
  • ¥15 运筹学排序问题中的在线排序
  • ¥15 关于docker部署flink集成hadoop的yarn,请教个问题 flink启动yarn-session.sh连不上hadoop,这个整了好几天一直不行,求帮忙看一下怎么解决
  • ¥30 求一段fortran代码用IVF编译运行的结果
  • ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集
  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛
  • ¥30 python代码,帮调试,帮帮忙吧