我正在尝试使用此代码并且它无法正常工作。 我该如何下载该图片并进行展示。
我的java代码
private ImageView iv;
private Bitmap bitmap;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_showprofile);
iv = (ImageView) findViewById(R.id.virus);
bitmap = getBitmapFromURL("http://getbloodbd.org/image.php?no=4");
iv.setImageBitmap(bitmap);}
public Bitmap getBitmapFromURL(String src) {
try {
URL url = new URL(src);
HttpURLConnection connection = (HttpURLConnection) url
.openConnection();
connection.setDoInput(true);
connection.connect();
InputStream input = connection.getInputStream();
Bitmap myBitmap = BitmapFactory.decodeStream(input);
return myBitmap;
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
return null;
}
}
我的xml代码是
<ScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
tools:context="org.getbloodbd.getbloodbd.ShowprofileActivity"
tools:showIn="@layout/app_bar_showprofile">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<ImageView
android:id="@+id/virus"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_alignParentStart="true" />
</RelativeLayout>
和我的PHP代码是和webview方法一样,它工作正常,但图像视图不起作用,但我需要图像视图方法。
<?php include 'config.php';header("Content-type: image/gif" );$no=$_GET['no']; $dn = mysql_query('select image from images where no="'.$no.'"'); $dnn = mysql_fetch_array($dn); $data = $dnn['image'];echo base64_decode($data);?>
如何解决?
答案 0 :(得分:0)
您可以从网址加载图片,如下所示
URL url = new URL("image full path");
Bitmap bmp = BitmapFactory.decodeStream(url.openConnection().getInputStream());
imageView.setImageBitmap(bmp);
加载图片的另一种方法
private Bitmap bmp;
new AsyncTask<Void, Void, Void>() {
@Override
protected Void doInBackground(Void... params) {
try {
InputStream in = new URL(IMAGE_URL).openStream();
bmp = BitmapFactory.decodeStream(in);
} catch (Exception e) {
// log error
}
return null;
}
@Override
protected void onPostExecute(Void result) {
if (bmp != null)
imageView.setImageBitmap(bmp);
}
}.execute();
请reference在这里。 请试试
答案 1 :(得分:0)
请点击此链接Click Here。
确保您在AndroidManifest.xml中设置了以下权限才能访问互联网。
<uses-permission android:name="android.permission.INTERNET" />
答案 2 :(得分:0)
您应该使用库Glide:https://github.com/bumptech/glide
进口
"typescript": "2.5.2",
"@angular/compiler": "4.3.6"
"@angular/compiler-cli": "4.3.6"
使用:
compile 'com.github.bumptech.glide:glide:4.1.1'
annotationProcessor 'com.github.bumptech.glide:compiler:4.1.1'
或者如果你想获得Bitmap:
Glide.with(this).load("http://getbloodbd.org/image.php?no=4").into(iv);
答案 3 :(得分:0)
无需为图像加载执行代码。 有一个着名的图书馆加载Android应用程序的图像,毕加索将负责调用重试,也保存图像在应用程序缓存。因此,每次都不会下载相同的图像。
对毕加索的依赖
Glide.with(this).asBitmap().load("http://getbloodbd.org/image.php?no=4").listener(new RequestListener<Bitmap>() {
@Override
public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Bitmap> target, boolean isFirstResource) {
return false;
}
@Override
public boolean onResourceReady(Bitmap resource, Object model, Target<Bitmap> target, DataSource dataSource, boolean isFirstResource) {
iv.setImageBitmap(resource);
return false;
}
});
答案 4 :(得分:0)
Yo可以使用Picasso或Glide从服务器获取图像并使用大量选项加载到ImageView中。
Picasso的样本
Picasso.with(context)
.load(url)
.centerCrop()
.placeholder(R.drawable.user_placeholder)
.error(R.drawable.user_placeholder_error)
.into(imageView);
Glide的样本
GlideApp
.with(context)
.load(url)
.centerCrop()
.placeholder(R.drawable.loading_spinner)
.into(imageView);
不要忘记在AndroidManifest.xml文件中添加互联网权限。
<uses-permission android:name="android.permission.INTERNET" />