phonegap(cordova) 入门 8----android ,iOS 移动端压缩图片

在使用了上面的多选插件之后,你又回遇到图片压缩的问题,那么接下来仔细看吧

随着摄像设备的提高,图片的清晰度越来越大,图片的大小也随之增大,所以上传图片时如果直接上传原图肯定是一种浪费流量和浪费时间的的体验,所以需要处理后上传

代码如下,都转化为 base64 后处理

android 中

public static String bitmapToString(String filePath) {

		Bitmap bm = getSmallBitmap(filePath);
		ByteArrayOutputStream baos = new ByteArrayOutputStream();
		bm.compress(Bitmap.CompressFormat.JPEG, 50, baos);
		byte[] b = baos.toByteArray();
		return Base64.encode(b);
	}

	// 根据路径获得图片并压缩,返回bitmap用于显示
	public static Bitmap getSmallBitmap(String filePath) {
		final BitmapFactory.Options options = new BitmapFactory.Options();
		options.inJustDecodeBounds = true;
		BitmapFactory.decodeFile(filePath, options);

		// Calculate inSampleSize
		options.inSampleSize = calculateInSampleSize(options, 480, 800);

		// Decode bitmap with inSampleSize set
		options.inJustDecodeBounds = false;

		return BitmapFactory.decodeFile(filePath, options);
	}

	// 计算图片的缩放值
	public static int calculateInSampleSize(BitmapFactory.Options options,
			int reqWidth, int reqHeight) {
		final int height = options.outHeight;
		final int width = options.outWidth;
		int inSampleSize = 1;

		if (height > reqHeight || width > reqWidth) {
			final int heightRatio = Math.round((float) height
					/ (float) reqHeight);
			final int widthRatio = Math.round((float) width / (float) reqWidth);
			inSampleSize = heightRatio < widthRatio ? heightRatio : widthRatio;
		}
		return inSampleSize;
	}

使用方法

bitmapToString("本地手机中的原图片地址")

iOS中

NSData *mydata = UIImageJPEGRepresentation("手机中的原图片地址",0.5);
NSString *pictureDataString=[mydata base64Encoding];


猜你喜欢

转载自blog.csdn.net/zlj002/article/details/49099123