안드로이드 개발 질문/답변
(글 수 45,052)
갤러리에서 이미지를 주소로 받아와서 화면에 출력하는 것까지는 했습니다.
ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(); nameValuePairs.add(new BasicNameValuePair("rowid", "0"));
제가 이런식으로 데이터를 웹 호스팅에 jsp파일로 데이터를 전송하고 있는데요.
같은 방식으로 이미지 파일을 묶어서 보내고 싶습니다. 참고로 mysql 테이블의 이미지저장 칼럼도 varchar입니다.
String imgPath;
//imgPath의 내용은 /mnt/sdcard/DCIM/.thumbnails/13055425.jpg 이런식으로 들어갑니다.
제가 생각한 방식은 비트맵 -> 바이트 -> 스트링 -> 웹전송 -> db저장 순입니다.
BitmapFactory.Options bfo = new BitmapFactory.Options(); bfo.inSampleSize = 2; Bitmap bm = BitmapFactory.decodeFile(imgPath); Bitmap resized = Bitmap.createScaledBitmap(bm, 320, 370, true); //일단 비트맵으로 바꿔서
ByteArrayOutputStream stream = new ByteArrayOutputStream();
resized.compress( CompressFormat.PNG, 100, stream);
byte[] byteArray = stream.toByteArray(); //바이트로 변환
String pngImage=Base64.encodeToString(byteArray, 0); //스트링으로 변환
resized.compress( CompressFormat.PNG, 100, stream);
byte[] byteArray = stream.toByteArray(); //바이트로 변환
String pngImage=Base64.encodeToString(byteArray, 0); //스트링으로 변환
//이렇게해서
ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
nameValuePairs.add(new BasicNameValuePair("image", pngImage)); //웹으로 전송
이렇게 하면 웹 호스팅에 DB에 저장은 잘 되긴하는데요
이걸 다시 가져와서 쓸때 JSON 스트링 -> 바이트 -> 비트맵 순으로 변환해서 출력하려고 합니다.
String result; //JSON 파싱결과
byte[] bloc = Base64.decode(result,0); //바이트로 변환
Bitmap bmp = BitmapFactory.decodeByteArray(bloc, 0, bloc.length); //비트맵 변환
ImageView iv = (ImageView)findViewById(R.id.logok);
iv.setImageBitmap(bmp); //이미지 출력
Bitmap bmp = BitmapFactory.decodeByteArray(bloc, 0, bloc.length); //비트맵 변환
ImageView iv = (ImageView)findViewById(R.id.logok);
iv.setImageBitmap(bmp); //이미지 출력
이렇게 햇는데 에러는 나지 않지만 이미지가 출력이 되지 않습니다 ㅠ
비트맵을 무리하게 스트링으로 변환해서 그런가요??ㅠㅠ
아이폰쪽과 연동을 해야해서 db에 꼭 varchar형태로 저장을 시키고 싶은데 방법을 찾고 싶습니다~
고수님들 꼭좀 도와주세요~~
참고 소스파일도 첨부하니 꼭 좀 봐주세요 ㅠ
데이터 전송 부분.java
public void transPort(){
ByteArrayOutputStream stream = new ByteArrayOutputStream();
resized.compress( CompressFormat.PNG, 100, stream);
byte[] byteArray = stream.toByteArray();
ByteArrayOutputStream stream = new ByteArrayOutputStream();
resized.compress( CompressFormat.PNG, 100, stream);
byte[] byteArray = stream.toByteArray();
String pngImage=Base64.encodeToString(byteArray, 0);
String table=table_num_et.getText().toString();
String people=people_num_et.getText().toString();
String talk3=talk_et.getText().toString();
httpclient = new DefaultHttpClient();
String url = "http://dd2012.cafe24.com/insert.jsp";
InputStream is = null;
try {
ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
nameValuePairs.add(new BasicNameValuePair("rowid", rowid));
nameValuePairs.add(new BasicNameValuePair("dbname", dbname));
nameValuePairs.add(new BasicNameValuePair("dbpass", dbpass));
nameValuePairs.add(new BasicNameValuePair("tableno", table));
nameValuePairs.add(new BasicNameValuePair("peopleno", people));
nameValuePairs.add(new BasicNameValuePair("intro", talk3));
nameValuePairs.add(new BasicNameValuePair("sex", sexcheck));
nameValuePairs.add(new BasicNameValuePair("image", pngImage));
String url = "http://dd2012.cafe24.com/insert.jsp";
InputStream is = null;
try {
ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
nameValuePairs.add(new BasicNameValuePair("rowid", rowid));
nameValuePairs.add(new BasicNameValuePair("dbname", dbname));
nameValuePairs.add(new BasicNameValuePair("dbpass", dbpass));
nameValuePairs.add(new BasicNameValuePair("tableno", table));
nameValuePairs.add(new BasicNameValuePair("peopleno", people));
nameValuePairs.add(new BasicNameValuePair("intro", talk3));
nameValuePairs.add(new BasicNameValuePair("sex", sexcheck));
nameValuePairs.add(new BasicNameValuePair("image", pngImage));
HttpParams params = httpclient.getParams();
HttpConnectionParams.setConnectionTimeout(params, 5000);
HttpPost httppost = new HttpPost(url);
UrlEncodedFormEntity entityRequest = new UrlEncodedFormEntity(nameValuePairs, "euc-kr");
httppost.setEntity(entityRequest);
HttpResponse response = httpclient.execute(httppost);
HttpEntity entityResponse = response.getEntity();
is = entityResponse.getContent();
BufferedReader reader = new BufferedReader(new InputStreamReader(is, "euc-kr"), 8);
HttpConnectionParams.setConnectionTimeout(params, 5000);
HttpPost httppost = new HttpPost(url);
UrlEncodedFormEntity entityRequest = new UrlEncodedFormEntity(nameValuePairs, "euc-kr");
httppost.setEntity(entityRequest);
HttpResponse response = httpclient.execute(httppost);
HttpEntity entityResponse = response.getEntity();
is = entityResponse.getContent();
BufferedReader reader = new BufferedReader(new InputStreamReader(is, "euc-kr"), 8);
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line).append("\n");
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line).append("\n");
}
is.close();
// 인풋스트림 닫음
result = sb.toString();
is.close();
// 인풋스트림 닫음
result = sb.toString();
table_num_et.setText("");
people_num_et.setText("");
talk_et.setText("");
iv.setImageResource(R.drawable.w_notimage);
people_num_et.setText("");
talk_et.setText("");
iv.setImageResource(R.drawable.w_notimage);
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
} finally {
httpclient.getConnectionManager().shutdown();
}
}
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
} finally {
httpclient.getConnectionManager().shutdown();
}
}
받는 부분.jsp
InputStream is = null;
String url = "http://dd2012.cafe24.com/userselectall.jsp";
HttpClient httpclient = new DefaultHttpClient();
try {
HttpClient httpclient = new DefaultHttpClient();
try {
ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
nameValuePairs.add(new BasicNameValuePair("rowid", "0"));
nameValuePairs.add(new BasicNameValuePair("sex", "남"));
nameValuePairs.add(new BasicNameValuePair("dbname", dbname));
nameValuePairs.add(new BasicNameValuePair("dbpass", dbpass));
nameValuePairs.add(new BasicNameValuePair("dbname", dbname));
nameValuePairs.add(new BasicNameValuePair("dbpass", dbpass));
HttpParams params = httpclient.getParams();
HttpConnectionParams.setConnectionTimeout(params, 5000);
HttpPost httppost = new HttpPost(url);
UrlEncodedFormEntity entityRequest = new UrlEncodedFormEntity(
nameValuePairs, "euc-kr");
httppost.setEntity(entityRequest);
HttpResponse response = httpclient.execute(httppost);
HttpEntity entityResponse = response.getEntity();
is = entityResponse.getContent();
HttpPost httppost = new HttpPost(url);
UrlEncodedFormEntity entityRequest = new UrlEncodedFormEntity(
nameValuePairs, "euc-kr");
httppost.setEntity(entityRequest);
HttpResponse response = httpclient.execute(httppost);
HttpEntity entityResponse = response.getEntity();
is = entityResponse.getContent();
BufferedReader reader = new BufferedReader(new InputStreamReader(
is, "euc-kr"), 8);
is, "euc-kr"), 8);
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line).append("");
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line).append("");
}
is.close();
result = sb.toString();
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
} finally {
httpclient.getConnectionManager().shutdown();
}
try{ //파싱
String a5="";
String Json=result;
Json+="{\"tableno\":\"tt\", \"peopleno\":\"kk\", \"intro\":\"ss\", \"image\":\"ss\"}]";
is.close();
result = sb.toString();
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
} finally {
httpclient.getConnectionManager().shutdown();
}
try{ //파싱
String a5="";
String Json=result;
Json+="{\"tableno\":\"tt\", \"peopleno\":\"kk\", \"intro\":\"ss\", \"image\":\"ss\"}]";
JSONArray ja=new JSONArray(Json);
int i;
String ln[]=new String[ja.length()-1];
for(i=0;i<ja.length()-1;i++){
JSONObject order=ja.getJSONObject(i);
a5=order.getString("image");
ln[i]=a5;
}
int i;
String ln[]=new String[ja.length()-1];
for(i=0;i<ja.length()-1;i++){
JSONObject order=ja.getJSONObject(i);
a5=order.getString("image");
ln[i]=a5;
}
result=ln[0]; //첫번째 저장 부분만 이미지출력을 보고 싶어서 일단 이렇게 했습니다.
byte[] bloc = Base64.decode(result,0);
Bitmap bmp = BitmapFactory.decodeByteArray(bloc, 0, bloc.length);
ImageView iv = (ImageView)findViewById(R.id.logok);
iv.setImageBitmap(bmp);
byte[] bloc = Base64.decode(result,0);
Bitmap bmp = BitmapFactory.decodeByteArray(bloc, 0, bloc.length);
ImageView iv = (ImageView)findViewById(R.id.logok);
iv.setImageBitmap(bmp);
}catch(JSONException e){
e.printStackTrace();
}
e.printStackTrace();
}
꼭 좀 부탁드립니다!!