【问题标题】:How to crop an image without using internal camera cropping如何在不使用内部相机裁剪的情况下裁剪图像
【发布时间】:2016-09-06 04:15:38
【问题描述】:

我想在imageview 中显示一个裁剪后的图像,该图像显示为预览,在显示为预览后,现在我想再次裁剪它并在imageView 中显示它,但我不想制作使用内部摄像头裁剪,裁剪时我不想固定高度和宽度。

【问题讨论】:

  • 请多解释一下你的问题我不清楚,如果可能的话用图表来详细说明你想要什么,也告诉我们你尝试了什么。
  • 我认为你想裁剪图像而不是图像视图。
  • 它只是我想裁剪图像但不使用内部相机裁剪。我想在我的应用程序中开发一个新的裁剪代码。对不起,我没有任何图表可以解释。这就是我能向你解释的全部内容。

标签: android image android-studio crop


【解决方案1】:

由于您没有提到任何具体要求,所以我将使用圆形图像裁剪示例来展示它的工作原理。所以图像就像在纸上绘制的图片,那么您需要在现实生活中更改图像吗?Canvas,Paint,Shapes 等。androidJava 中也有相同的内容。各种 API。

您可以使用bitmap,它是pixels 中的matrix,您可以在其上使用“Canvas”类进行绘画、裁剪、造型等。

步骤:
1. 从您的图像或可绘制等中获取位图
2. 使用Config.ARGB_8888 创建一个新的位图,意味着将 alpha,RGB 通道设置为新位图的 8 位大小以提高效率。
3. 为圆角造型创建一个新的BitmapShader
4. 创建一个新的Paint,其中包含要绘制的样式和颜色信息。
5. 创建一个新的Canvas,它使用输入来处理绘制操作。
6. 使用Paint 和半径在Canvas 对象上调用“drawCircle”。
7.你完成了!现在您可以研究这些 API 以满足您的要求。

Bitmap bitmap = yourImageBitmap; // step 1
Bitmap circleBitmap = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), Bitmap.Config.ARGB_8888); // step 2

BitmapShader shader = new BitmapShader (bitmap,  TileMode.CLAMP, TileMode.CLAMP);// step 3
Paint paint = new Paint(); // step 4
        paint.setShader(shader);
paint.setAntiAlias(true); // smooth picture
Canvas c = new Canvas(circleBitmap); // step 5 
c.drawCircle(bitmap.getWidth()/2, bitmap.getHeight()/2, bitmap.getWidth()/2, paint); // step 6    

myImageView.setImageBitmap(circleBitmap);

【讨论】:

    【解决方案2】:

    我可能会使用 ImageMagick。

    https://github.com/paulasiimwe/Android-ImageMagick

    这是一个高质量、灵活的图像处理库。我没有在 Android 中使用过它,但从命令行和 C# 来看它非常简单。我相信MagickImage 类是您需要的主要类。

    【讨论】:

      猜你喜欢
      • 2014-07-25
      • 1970-01-01
      • 1970-01-01
      • 2012-11-08
      • 1970-01-01
      • 2016-12-27
      • 1970-01-01
      • 1970-01-01
      • 2022-01-23
      相关资源
      最近更新 更多