我正在使用此代码将Bitmap转换为Base64:
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, **quality**, baos);
byte[] b = baos.toByteArray();
base64code = Base64.encodeToString(b, Base64.DEFAULT);
并以这种方式在服务器端接收它:
$strImage = preg_replace('!\s*!', '', trim($this->input->post('image')));
$thefile = base64_decode($strImage);
$img = imagecreatefromstring($thefile);
//header('Content-Type: image/jpeg');
header('Content-Type: bitmap; charset=utf-8');
imagesavealpha($img, true);
imagejpeg($img,'./images/temp/testing.jpg',100);
imagedestroy($img);
问题:
我从设备库中挑选并发送到服务器的实际图像大小为344 kb当我设置质量 = 0并显示一个微调器对话框时,base64字符串正在发送到服务器,发送需要5 秒,并且在服务器端接收到的图像是344 Kb但如果我设置质量 = 100发送需要60-70 秒,而我在服务器端接收到的图像是1.7 Mb
问题:
为什么我在使用质量 = 0时获得实际尺寸,而在质量 = 100时获得近5 倍大的图像
笔记:
当我设置质量 = 100并更改
imagejpeg($img,'./images/temp/testing.jpg',100);
至
imagejpeg($img,'./images/temp/testing.jpg',10);
发送需要60-70 秒,但服务器端接收到的图像太小67 Kb
谢谢你