美好的一天,拜托我正在尝试编写一个应用程序,将我用相机拍摄的图像自动存储到数据库中。但是我想在保存之前检查图像大小(MB)。
我阅读了 android Camera.Capture 开发人员说明并知道我无法以编程方式调整大小。
另外我知道在上传到数据库之前存储在一个临时文件夹中是可能的,但我正在寻找一个不保存在临时文件夹中的文件夹。
谢谢。
美好的一天,拜托我正在尝试编写一个应用程序,将我用相机拍摄的图像自动存储到数据库中。但是我想在保存之前检查图像大小(MB)。
我阅读了 android Camera.Capture 开发人员说明并知道我无法以编程方式调整大小。
另外我知道在上传到数据库之前存储在一个临时文件夹中是可能的,但我正在寻找一个不保存在临时文件夹中的文件夹。
谢谢。
getRowBytes() * getHeight() 对我来说似乎工作正常。
您的服务器无法知道图像的大小,除非它可以查看它。您可以使用 PHP 来限制最大上传大小。一旦您将服务器上的文件作为临时文件,您就可以更详细地分析它(尺寸等)。如果图像“好”,则将其移动到其永久位置(另一个目录或作为数据库 BLOB),如果不是,则将其删除。
在您的相机 PictureCallback 中:
public void onPictureTaken(byte[] data, Camera camera)
{
int nPictureSize = data.length;
}
压缩图像的长度就是字节数组的长度
如果您使用的是自定义相机,那么在您的回调中,您将收到一个字节数组,只需获取该数组的长度并将其除以 1024*1024 即可获得以 MB 为单位的大小。
如果您使用的是相机意图,那么您将返回一个位图,其大小可以通过使用 bitmap.getRowbytes * bitmap.getHeight 找到,然后将其除以 1024*1024 以获得以 MB 为单位的图像大小