gpt4 book ai didi

java - 以预设的纵横比和宽度/高度裁剪图像并保存

转载 作者:行者123 更新时间:2023-11-30 00:13:23 25 4
gpt4 key购买 nike

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

例子:

Example crop image with margins

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

我已经尝试了以下(没有运气):

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 crop image

java android crop image tutorial

谁能帮帮我?

最佳答案

我也要去那里。挣扎了数周,但我的大脑清醒了:一切正常,但我没有将图片/图像保存到设备。

边距有效。

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

更新:

    // 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();
}
}

关于java - 以预设的纵横比和宽度/高度裁剪图像并保存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47760026/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com