내가 현재 할하려고하는 것은 다음Base64 인코딩 및
사진 촬영, PNG, 비밀 사용 Base64로로 압축하고 PHP를 통해 데이터베이스로 전송. 그것 모두는 매력처럼 작동합니다. 또한 Base64 문자열을 디코딩하여 사진을 완벽하게 표시 할 수 있습니다.
그러나 문제는 브라우저에서 사진을 볼 때 크기가 같지 않거나 최소한 생각해야한다는 것입니다.
이
내가 브라우저에서 인코딩 및 표시 찍은 이미지입니다 :에 관계없이 전화, (또한 갤럭시 SII 테스트)의, 문제는 여전히 남아있다. 너 무슨 일이 일어날 지 아무 생각 없어? 여기 내가 가지고 있지만 확실하지 않은 몇 가지 아이디어가 있습니다 ... 1. 이미지를 너무 많이 압축하거나 압축하면 무언가가 바뀝니다 2.Base64 인코딩/디코딩은 사진을 엉망으로 만들고 올바르게 표시하지 않습니다. 3. 장소 이미지보기의 이미지는 크기를 수정합니다.
다시 전체 이미지가 전송되지 않는 것처럼 보입니다. 갤럭시 sII 이미지조차도 이미지가 작아 보이지 않기 때문입니다. 안드로이드
// CONVERT:
ByteArrayOutputStream bao = new ByteArrayOutputStream();
picture.compress(Bitmap.CompressFormat.PNG, 100, bao);
Log.d(TAG, "AFTER. Height: " + picture.getHeight() + " Width: " + picture.getWidth());
final byte[] ba = bao.toByteArray();
//encode to string
String photoTest = Base64.encodeToString(ba, Base64.DEFAULT);
//Camera on activity for result - save it as a bmp and place in imageview
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == CAMERA_PIC_REQUEST) {
// do something
}
if (resultCode == Activity.RESULT_OK) {
Log.d(TAG, "result ok");
Bundle b = data.getExtras();
picture = (Bitmap) b.get("data");
imageView.setImageBitmap(picture);
}
}
이미지보기 : 안드로이드 :
여기 내가 사용하고 코드입니다
<ImageView
android:id="@+id/imageView1"
android:layout_width="100dp"
android:layout_height="100dp"
android:src="@drawable/icon"/>
PHP :
$image = base64_decode($_POST['image_data']);
여러분의 도움에 감사드립니다!
이 함께 할 수있는 아무것도 아니다 Base64 및 이미지 변환 방법에 관한 모든 것. 이미지를 디코딩 할 때 이미지가 너무 작 으면 이미지를 인코딩 할 때 너무 작습니다. Base64는 바이너리 데이터를 ASCII 형식으로 저장합니다. 데이터가 디코딩 될 때 정확히 동일합니다. 잘못 나온 경우 시작했을 때 잘못되었습니다. – DaveRandom
답장을 보내 주셔서 감사합니다.당신이 올바르게 쓴 것을 이해한다면, 인코딩으로 넘어갈 때 이미지 크기가 원본이 아니라는 것이 문제입니다. 그래서 내 다음 질문은 이미지의 진정한 크기를 얻을 수있는 방법이 될 것입니다. – Splitusa
@ Campadrenaline의 답변이 올바른 방향으로 가고 있다고 생각합니다. 이미지를 변환하는 'picture.compress()'라고 생각합니다. 이것이 이미지가 압축 된 방법의 관점에서 사용되는 경향이 있기 때문에 이것은 염두에두고 "품질"에 관한 것이 아닙니다. 문제는 클라이언트 측 코드의 어느 지점에서 이미지의 크기를 조정하거나 "다시 샘플링"하는 것입니다. 압축 코드를 꺼내고 압축 풀기없이 작동 시키려면 압축을 풀고 재생을 시작해야합니다. – DaveRandom