Android 相机 - 如何从字节数组中获取特定的 "rectangle"?

标签 android camera crop photos

我创建了一个拍摄和保存照片的应用程序。 我在该预览之上有一个预览和一个叠加层。 overlay 定义了一个正方形(正方形周围的区域显示预览有点暗),正如您在图像中看到的:

example

我需要做的是提取正方形所在的图像部分。 正方形定义如下:

    Rect frame = new Rect(350,50,450,150);

我该怎么做?我有可以保存的字节数组(byte[] 数据),但我想更改应用程序以便只保存正方形区域。

编辑:我尝试了以下方法:

int[] pixels = new int[100000];
            ByteArrayOutputStream bos = new ByteArrayOutputStream();
            Bitmap bitmap = BitmapFactory.decodeByteArray(data , 0, data.length);
            bitmap.getPixels(pixels, 0, 480, 350, 50, 100, 100);
            bitmap = Bitmap.createBitmap(pixels, 0, 100, 100, 100, Config.ARGB_4444);
            bitmap.compress(CompressFormat.JPEG, 0, bos);
            byte[] square = bos.toByteArray();

然后将数组“square”写入一个新文件... 问题是我得到了一张由线条组成的图片...我所做的转换有问题

最佳答案

我花了一些时间才弄清楚代码应该是这样的:

int[] pixels = new int[100*100];//the size of the array is the dimensions of the sub-photo
        ByteArrayOutputStream bos = new ByteArrayOutputStream();
        Bitmap bitmap = BitmapFactory.decodeByteArray(data , 0, data.length);
        bitmap.getPixels(pixels, 0, 100, 350, 50, 100, 100);//the stride value is (in my case) the width value
        bitmap = Bitmap.createBitmap(pixels, 0, 100, 100, 100, Config.ARGB_8888);//ARGB_8888 is a good quality configuration
        bitmap.compress(CompressFormat.JPEG, 100, bos);//100 is the best quality possibe
        byte[] square = bos.toByteArray();

关于Android 相机 - 如何从字节数组中获取特定的 "rectangle"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9656350/

相关文章:

swift - 根据绘制的框架,裁剪工作不完美

svg - 裁剪 SVG 的正确方法?

javascript - 计算图像裁剪比例

python - 通过 python 使用 maemo 相机

iphone - 如何将图像保存到相机胶卷?

Android:没有 TabActivity 的 TabHost

Android:下载大量文件的正确方法

java - 如何在java中低级别复制struct.pack

android - 安装ADT插件后未出现Welcome to Android Development

opengl - 计算最指向 y 轴的 gluLookAt 向上向量的有效方法?