私はこのコードを使用してビットマップを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);
問題:
サーバーに送信するためにデバイスギャラリーから選択している実際の画像サイズは344kbです。品質=0に設定し、 base64文字列がサーバーに送信されているスピナーダイアログを表示すると、送信に5秒かかります。サーバー側で受信した画像は344Kbですが、品質= 100に設定している場合、送信には60〜70秒かかり、サーバー側で受信した画像は1.7Mbです。
質問:
品質=0を使用した場合に実際のサイズを取得し、品質=100を使用した場合に約5倍の画像を取得するのはなぜですか
ノート:
品質を100に設定して変更する場合
imagejpeg($img,'./images/temp/testing.jpg',100);
に
imagejpeg($img,'./images/temp/testing.jpg',10);
送信には60〜70秒かかりますが、サーバー側で受信した画像が小さすぎます67 Kb
ありがとうございました