【问题标题】:Crop an image with preset aspect ratio and width/height and save裁剪具有预设纵横比和宽度/高度的图像并保存
【发布时间】:2017-12-11 19:29:36
【问题描述】:

我已经构建了一个相机应用程序,可以让我拍照,但我想以特定(预设)宽度/高度和纵横比保存它。

例子:

  • 红色:旧图(来源)
  • 绿色:新图片
  • 红色和绿色之间:边距

我尝试了以下方法(没有运气):

BitmapFactory.Options bmOptions = new BitmapFactory.Options();
    bitmap = BitmapFactory.decodeFile(editPhotoFile.getAbsolutePath(), bmOptions);
    bitmap = Bitmap.createScaledBitmap(bitmap, bitmap.getWidth(), bitmap.getHeight(), true);
    Bitmap croppedBmp = Bitmap.createBitmap(bitmap, margin, margin, bitmap.getWidth() - margin, bitmap.getHeight() - margin);

使用边距,我尝试在左侧(第一个边距)和顶部(第二个边距)切割特定数量的像素,并且在总宽度和高度上相同。不工作。

Github 上也有一些可用的库,但它们都可以让我选择图像并对其进行编辑 - 我不需要手动编辑,我希望有预设的边距进行裁剪。

此外,Stack Overflow 上的可能解决方案以及仅通过谷歌搜索或查找教程都不会给我带来任何运气。 搜索查询:

java android 裁剪图片

java android 裁剪图片教程

谁能帮帮我?

【问题讨论】:

  • 所以你不希望用户编辑图像裁剪..部分?
  • 不。我想自己裁剪图像,因此图像在每台设备上的比例相同。一些设备具有 3:4 传感器,其他设备具有 9:16 或 16:9,依此类推。这就是原因。

标签: java android image crop


【解决方案1】:

我也快到了。挣扎了几个星期,但我的大脑变得清晰:一切正常,但我没有将图片/图像保存到设备中。

利润正在发挥作用。

明天将使用我找到的解决方案更新/编辑这篇文章。

更新:

    // get String with path to file from other activity and make new File of it
    File editPhotoFile = new File(globalFileString);
    BitmapFactory.Options bmOptions = new BitmapFactory.Options();
    bitmap = BitmapFactory.decodeFile(photoFile.getAbsolutePath(), bmOptions);

    // crop the bitmap with new margins: bitmap, left, top, width, height
    Bitmap croppedBmp = Bitmap.createBitmap(bitmap, marginLeft, marginTop, bitmapHeight, bitmapWidth);

    // save bitmap to new file
    FileOutputStream out = null;
    File mediaFile;
    try {
        mediaFile = new File(globalFileString);
        out = new FileOutputStream(mediaFile);
        croppedBmp.compress(Bitmap.CompressFormat.JPEG, 100, out);
    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        try {
            if (out != null) {
                out.close();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-02-06
    • 2016-12-30
    • 1970-01-01
    • 2017-03-16
    • 2018-02-27
    • 2015-07-28
    • 2019-11-14
    • 2014-07-01
    相关资源
    最近更新 更多