0
메신저로 보내고 카메라에서 이미지를 캡처하고 파일 생성을위한 PHP 컨트롤러를 보내고 javascript 파일을 보내서 mysql에 정보를 삽입하십시오.android image to base64 string, android 이미지를 base64 문자열로 보내고 안드로이드 앱에서이 코드를 사용하여
프로세스가 잘 작동하지만 결과 이미지가 작은 정말 품질이 좋지
if(ACTION_TAKE_PICTURE == requestCode)
{
Bundle extras = intent.getExtras();
Bitmap bitmap;
if(null == extras || null == (bitmap=(Bitmap)extras.get("data"))) return;
ByteArrayOutputStream out = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, out);
byte [] ba = out.toByteArray();
String b64img = Base64.encodeToString(out.toByteArray(), Base64.NO_WRAP);
try { out.close(); } catch(Exception e) {}
wv.loadUrl(String.format("%s%s('%s')", getString(R.string.js_call_prefix), getString(R.string.js_callback_camera), b64img ));
}
PHP 코드가하는 것입니다
public function executeImagen(sfWebRequest $request) {
$id = $request->getParameter('id');
$img = $request->getParameter('img');
$category = $request->getParameter('category');
$user = $this->getUser()->getAttribute('id_users');
try {
$basepdir = $path = sfConfig::get("sf_upload_dir") . '/photos/';
$basename = date('Ymd_His');
$buffer = base64_decode(str_replace(' ', '+', $img));
$pname = sprintf("%s%s.JPG", $basepdir, $basename);
$photo = sprintf("%s.JPG", $basename);
$fd = fopen($pname, "wb");
if ($fd) {
fwrite($fd, $buffer);
fflush($fd);
fclose($fd);
}
} catch (Exception $exc) {
echo $exc->getTraceAsString();
}
try {
$tabla = Doctrine::getTable('StorePhotos');
$tabla = new StorePhotos();
$tabla->id_store = $id;
$tabla->id_category = $category;
$tabla->id_users = $user;
$tabla->imagen = $photo;
$tabla->photo_date = date('Y-m-d H:i:s');
$tabla->save();
} catch (Exception $e) {
trigger_error("ERROR: ", $e->getMessage());
}
return sfView::NONE;
}
감사합니다.
안녕하세요, 웹에서와 동일한 작업을하려고하지만 ..... 알아낼 수 없습니다. ( –
기본적으로 의도를 보내고 의도 파일의 URI를 전달해야합니다. 카메라 응용 프로그램은 요청한 위치에 사진 파일을 놓습니다. 그런 다음 파일을 다시 읽고 base64로 인코딩하면됩니다. 이미지 파일의 크기가 몇 메가 바이트가 될 수 있으므로 스트리밍으로 파일을 인코딩하고 업로드하십시오. base64OutputStream] (http://developer.android.com/reference/android/util/Base64OutputStream.html) – BladeCoder
고마워, 내가 이런 식으로 : \t \t 'ByteArrayOutputStream out = new ByteArrayOutputStream(); \t \t \t \t Base64OutputStream b64img = 새로운 Base64OutputStream (\t out, Base64.NO_WRAP | Base64.NO_CLOSE);',하지만 오류가 발생합니다. 이미지가 발견되지 않습니다. /storage/sdcard0/DCIM/Camera/20140422_114840.jpg 'Java.net.MalFormedURLException : 프로토콜을 찾을 수 없습니다. –