如何设置从Android到数据库MySQL的限制上传图像

时间:2016-12-21 15:51:07

标签: android mysql

先生,我有问题,我希望将ALTER TABLE `mobile_update' CHANGE COLUMN `initial_entry` `initial_entry` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP; 设置为LIMIT,以KB(千字节)为单位,例如200KB。

UPLOAD IMAGE

我尝试了这段代码但是,我只能上传110KB,当我尝试上传116KB时,它无法上传。 如何上传200KB文件先生?我不知道如何计算7 * 1024 * 1024

1 个答案:

答案 0 :(得分:0)

试试这段代码:

/**
 * reduces the size of the image
 * @param image
 * @param maxSize
 * @return
 */
public Bitmap getResizedBitmap(Bitmap image, int maxSize) {
    int width = image.getWidth();
    int height = image.getHeight();

    float bitmapRatio = (float)width / (float) height;
    if (bitmapRatio > 0) {
        width = maxSize;
        height = (int) (width / bitmapRatio);
    } else {
        height = maxSize;
        width = (int) (height * bitmapRatio);
    }
    return Bitmap.createScaledBitmap(image, width, height, true);
}

使用它像:

Bitmap scaledImage = getResizedBitmap(photo, 300); //here 300 is maxsize

来自Wikipedia

对于最高质量的图像(Q = 100),每个颜色像素需要大约8.25位

因此,对于Q=100图像上的300x300,这将导致(300 * 300)px * 8.25位/ px = 741,500位= ~91 kB,这肯定小于200 KB

你也可以尝试其他方面..

您还可以尝试使用位图制作图像并比较图像的实际尺寸。

这是代码:

 //create a file to write bitmap data
File f = new File(context.getCacheDir(), filename);
f.createNewFile();

//Convert bitmap to byte array
Bitmap bitmap = your bitmap;
ByteArrayOutputStream bos = new ByteArrayOutputStream();
bitmap.compress(CompressFormat.PNG, 0 /*ignored for PNG*/, bos);
byte[] bitmapdata = bos.toByteArray();

//write the bytes in file
FileOutputStream fos = new FileOutputStream(f);
fos.write(bitmapdata);
fos.flush();
fos.close();