Android에서 URL의 이미지를 표시하는 방법
화면에 이미지를 표시하고 싶습니다. 이미지는 드로어 블이 아닌 URL에서 가져와야합니다.
코드는 다음과 같습니다.
<ImageView android:id="@+id/ImageView01" android:src = "http://l.yimg.com/a/i/us/we/52/21.gif"
android:layout_width="wrap_content" android:layout_height="wrap_content"></ImageView>
그러나 컴파일 타임에 오류가 발생합니다.
Android에서 URL의 이미지를 어떻게 표시합니까?
이미지를 다운로드하지 않고 웹에서 직접 볼 수 있습니다. 아래 기능을 확인하십시오. 웹의 이미지를 이미지보기로 표시합니다.
public static Drawable LoadImageFromWebOperations(String url) {
try {
InputStream is = (InputStream) new URL(url).getContent();
Drawable d = Drawable.createFromStream(is, "src name");
return d;
} catch (Exception e) {
return null;
}
}
그런 다음 활동의 코드를 사용하여 이미지를 imageview로 설정하십시오.
이 코드를 사용해 보았습니다. URL에서 직접 이미지 가져 오기
private class DownloadImageTask extends AsyncTask<String, Void, Bitmap> {
ImageView bmImage;
public DownloadImageTask(ImageView bmImage) {
this.bmImage = bmImage;
}
protected Bitmap doInBackground(String... urls) {
String urldisplay = urls[0];
Bitmap mIcon11 = null;
try {
InputStream in = new java.net.URL(urldisplay).openStream();
mIcon11 = BitmapFactory.decodeStream(in);
} catch (Exception e) {
Log.e("Error", e.getMessage());
e.printStackTrace();
}
return mIcon11;
}
protected void onPostExecute(Bitmap result) {
bmImage.setImageBitmap(result);
}
}
onCreate () 메서드 내부에서 사용
new DownloadImageTask ((ImageView) findViewById (R.id.image)) .execute ( " http://scoopak.com/wp-content/uploads/2013/06/free-hd-natural-wallpapers-download-for-pc .jpg ");
다른 질문에서 찾은 이것을 시도해 볼 수 있습니다.
Android, ImageView의 이미지와 동일한 URL에서 이미지 만들기
try {
ImageView i = (ImageView)findViewById(R.id.image);
Bitmap bitmap = BitmapFactory.decodeStream((InputStream)new URL(imageUrl).getContent());
i.setImageBitmap(bitmap);
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
Picasso로 시도해 볼 수 있습니다. 정말 멋지고 쉽습니다. 매니페스트에 권한을 추가하는 것을 잊지 마십시오.
Picasso.with(context)
.load("http://ImageURL")
.resize(width,height)
.into(imageView );
여기에서 튜토리얼을 볼 수도 있습니다 : Youtube / Github
간단한 예를 들면
http://www.helloandroid.com/tutorials/how-download-fileimage-url-your-device
httpClient를 사용하고 이미지를 다운로드해야합니다 (필요한 경우 캐시).
표시를 위해 본질적으로 동일한 코드 (URL에서 imageview가 설정된 코드 확인)에 이미지를 표시하기 위해 제공되는 솔루션.
URL에서 이미지를 다시 시도하고 다음 코드를 사용하여 SD 카드에 저장했습니다.
public String Downloadfromurl(String Url)
{
String filepath=null;
try {
URL url = new URL(Url);
//create the new connection
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
//set up some things on the connection
urlConnection.setRequestMethod("GET");
urlConnection.setDoOutput(true);
//and connect!
urlConnection.connect();
//set the path where we want to save the file
//in this case, going to save it on the root directory of the
//sd card.
folder = new File(Environment.getExternalStorageDirectory().toString()+"/img");
folder.mkdirs();
//create a new file, specifying the path, and the filename
//which we want to save the file as.
String filename= "page"+no+".PNG";
file = new File(folder,filename);
if(file.createNewFile())
{
file.createNewFile();
}
//this will be used to write the downloaded data into the file we created
FileOutputStream fileOutput = new FileOutputStream(file);
//this will be used in reading the data from the internet
InputStream inputStream = urlConnection.getInputStream();
//this is the total size of the file
int totalSize = urlConnection.getContentLength();
//variable to store total downloaded bytes
int downloadedSize = 0;
//create a buffer...
byte[] buffer = new byte[1024];
int bufferLength = 0; //used to store a temporary size of the buffer
//now, read through the input buffer and write the contents to the file
while ( (bufferLength = inputStream.read(buffer)) > 0 ) {
//add the data in the buffer to the file in the file output stream (the file on the sd card
fileOutput.write(buffer, 0, bufferLength);
//add up the size so we know how much is downloaded
downloadedSize += bufferLength;
//this is where you would do something to report the prgress, like this maybe
Log.i("Progress:","downloadedSize:"+downloadedSize+"totalSize:"+ totalSize) ;
}
//close the output stream when done
fileOutput.close();
if(downloadedSize==totalSize)
filepath=file.getPath();
//catch some possible errors...
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
filepath=null;
e.printStackTrace();
}
Log.i("filepath:"," "+filepath) ;
return filepath;
}
InputStream URLcontent = (InputStream) new URL(url).getContent();
Drawable image = Drawable.createFromStream(URLcontent, "your source link");
이것은 나를 위해 일했습니다
ASyncTask
http 처리 를 위해 코드를 작성하십시오 .
Bitmap b;
ImageView img;
......
try
{
URL url = new URL("http://10.119.120.10:80/img.jpg");
InputStream is = new BufferedInputStream(url.openStream());
b = BitmapFactory.decodeStream(is);
} catch(Exception e){}
......
img.setImageBitmap(b);
I've same issue. I test this code and works well. This code Get Image from URL and put in - "bmpImage"
URL url = new URL("http://your URL");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setReadTimeout(60000 /* milliseconds */);
conn.setConnectTimeout(65000 /* milliseconds */);
conn.setRequestMethod("GET");
conn.setDoInput(true);
conn.connect();
int response = conn.getResponseCode();
//Log.d(TAG, "The response is: " + response);
is = conn.getInputStream();
BufferedInputStream bufferedInputStream = new BufferedInputStream(is);
Bitmap bmpImage = BitmapFactory.decodeStream(bufferedInputStream);
You can simply use the Glide API. It avoids all the boilerplate code and the task can be achieved in two lines of code. You refer this link https://blog.mindorks.com/downloading-and-showing-image-with-glide-library-in-android. Enjoy
참고URL : https://stackoverflow.com/questions/6407324/how-to-display-image-from-url-on-android
'programing' 카테고리의 다른 글
데이터 프레임에서 문자 값을 NA로 바꾸기 (0) | 2020.12.14 |
---|---|
jquery : event.stopImmediatePropagation () 대 반환 false (0) | 2020.12.14 |
kubectl 구성에서 클러스터와 컨텍스트를 삭제하려면 어떻게해야합니까? (0) | 2020.12.14 |
차량 번호판 감지에 적합한 알고리즘은 무엇입니까? (0) | 2020.12.13 |
JavaScript 익명 함수 즉시 호출 / 실행 (표현식 대 선언) (0) | 2020.12.13 |