Android:裁剪位图(以一种奇怪的方式)

Posted

技术标签:

【中文标题】Android:裁剪位图(以一种奇怪的方式)【英文标题】:Android: Cropping a bitmap (in a strange way) 【发布时间】:2011-07-05 13:55:42 【问题描述】:

我正在制作一个要求用户为自己拍照的应用。

所有问题都源于图像必须为 480 x 800 的事实。 我正在使用的设备(摩托罗拉 Xoom)上的摄像头显然不支持该纵横比。

我正在寻找一种方法来拍摄更大尺寸的照片(1280 x 960 有足够大的高度),然后开始从两侧、顶部和底部刮掉大块。

因此,如果有人能提供一种方法来做到这一点(或更好的想法),我将不胜感激。

谢谢。

【问题讨论】:

【参考方案1】:

更好的想法是将图像的大小调整为最大 480 的宽度或最大 800 的高度,并使用适当的填充显示它。 这是一个简单的方法:

import android.graphics.Bitmap;

public class ImageUtils 
    public static Bitmap  BitmapResizeToMaxXorY(Bitmap srcBitmap, int destSizeX, int destSizeY) 
        Bitmap ret = null;

        if (srcBitmap != null && destSizeX > 0 && destSizeY > 0) 
            Float origSizeX  = new Float(srcBitmap.getWidth());
            Float origSizeY = new Float(srcBitmap.getHeight());

            if (origSizeX > destSizeX || origSizeY > destSizeY) 
                float origRatio =  origSizeX / origSizeY;
                float destRatio = destSizeX / destSizeY;

                float targetSizeX;
                float targetSizeY;

                if (origRatio >= destRatio) 
                    if (destSizeX >= origSizeX) 
                        targetSizeX = origSizeX;
                     else 
                        targetSizeX = destSizeX;
                    

                    targetSizeY = targetSizeX / origRatio;
                 else 
                    if (destSizeY >= origSizeY) 
                        targetSizeY = origSizeY;
                     else 
                        targetSizeY = destSizeY;
                    

                    targetSizeX = targetSizeY * origRatio;
                

                ret = Bitmap.createScaledBitmap(srcBitmap, (int) targetSizeX, (int) targetSizeY, false);
             else 
                // original image is smaller than destination sizes so we are returning original
                ret = srcBitmap;
                       
        

        return ret;
    

【讨论】:

干杯芽。我会试一试,让你知道结果! 抱歉,有几个问题。我认为“destSizeX”和“destSizeY”参数是我应该输入的最大尺寸?

以上是关于Android:裁剪位图(以一种奇怪的方式)的主要内容,如果未能解决你的问题,请参考以下文章

SqlConnection 状态以一种奇怪的方式变化

为啥在 Racket 中以一种奇怪的方式定义 foldl?

以一种奇怪的方式触地射击

QStandardItem 以一种奇怪的方式插入行

为啥我的文本字符串以一种奇怪的方式换行? (HTML/CSS)

Android:从位图裁剪位图并设置为 ImageView src