将图像 URL 转换为 android 中的可绘制资源 ID
Convert image URL to drawable resource id in android
我正在使用带有此代码的 KenBurnsView 库:
mHeaderPicture.setResourceIds(R.drawable.picture0, R.drawable.picture1);
如您所见,它需要可绘制资源 ID。
我想做的是将所有照片 URL 隐藏到可绘制资源 ID。
像这样的照片网址:
http://example.com/image.jpg
http://example.com/image2.jpg
http://example.com/image3.jpg
http://example.com/image4.jpg
我在这里试过这段代码,但没有成功:
Bitmap drawable_from_url(String url) throws java.net.MalformedURLException, java.io.IOException {
Bitmap x;
HttpURLConnection connection = (HttpURLConnection)new URL(url) .openConnection();
connection.setRequestProperty("User-agent","Mozilla/4.0");
connection.connect();
InputStream input = connection.getInputStream();
x = BitmapFactory.decodeStream(input);
return x;
}
我在网上阅读了很多问题和答案,但没有找到好的教程或解决方案。
添加异步任务...
new DownloadImageTask((ImageView) findViewById(R.id.imageView1))
.execute(url);
}
public void onClick(View v) {
startActivity(new Intent(this, IndexActivity.class));
finish();
}
private class DownloadImageTask extends AsyncTask<String, Void, Bitmap> {
ImageView mHeaderPicture;
public DownloadImageTask(ImageView mHeaderPicture){
this.mHeaderPicture= mHeaderPicture;
} 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) {
mHeaderPicture.setImageBitmap(result);
}
}`
确保您在 AndroidManifest.xml 中设置了以下访问互联网的权限。
<uses-permission android:name="android.permission.INTERNET" />
尝试将此库放入您的项目中。它是一个有用的图书馆。
http://square.github.io/picasso/
示例用法:
Picasso.with(context).load("http://example.com/image.jpg").into(imageView);
如何从 imageView 获取 drawable:
Drawable myDrawable = imageView.getDrawable();
您不能将位图转换为资源 ID。资源 ID 仅适用于 APK 中的资源。您必须编辑或扩展 KenBurnsView class 以接受位图对象,例如通过添加如下函数:
public void setBitmaps(Bitmap... bitmaps) {
for (int i = 0; i < mImageViews.length; i++) {
mImageViews[i].setImageBitmap(bitmaps[i]);
}
}
然后您可以传递使用 drawable_from_url()
加载的位图
您只是忘记将 setDoInput 添加到连接
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 (IOException e) {
e.printStackTrace();
return null;
}
}
我正在使用带有此代码的 KenBurnsView 库:
mHeaderPicture.setResourceIds(R.drawable.picture0, R.drawable.picture1);
如您所见,它需要可绘制资源 ID。
我想做的是将所有照片 URL 隐藏到可绘制资源 ID。 像这样的照片网址:
http://example.com/image.jpg
http://example.com/image2.jpg
http://example.com/image3.jpg
http://example.com/image4.jpg
我在这里试过这段代码,但没有成功:
Bitmap drawable_from_url(String url) throws java.net.MalformedURLException, java.io.IOException {
Bitmap x;
HttpURLConnection connection = (HttpURLConnection)new URL(url) .openConnection();
connection.setRequestProperty("User-agent","Mozilla/4.0");
connection.connect();
InputStream input = connection.getInputStream();
x = BitmapFactory.decodeStream(input);
return x;
}
我在网上阅读了很多问题和答案,但没有找到好的教程或解决方案。
添加异步任务...
new DownloadImageTask((ImageView) findViewById(R.id.imageView1))
.execute(url);
}
public void onClick(View v) {
startActivity(new Intent(this, IndexActivity.class));
finish();
}
private class DownloadImageTask extends AsyncTask<String, Void, Bitmap> {
ImageView mHeaderPicture;
public DownloadImageTask(ImageView mHeaderPicture){
this.mHeaderPicture= mHeaderPicture;
} 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) {
mHeaderPicture.setImageBitmap(result);
}
}`
确保您在 AndroidManifest.xml 中设置了以下访问互联网的权限。
<uses-permission android:name="android.permission.INTERNET" />
尝试将此库放入您的项目中。它是一个有用的图书馆。 http://square.github.io/picasso/
示例用法:
Picasso.with(context).load("http://example.com/image.jpg").into(imageView);
如何从 imageView 获取 drawable:
Drawable myDrawable = imageView.getDrawable();
您不能将位图转换为资源 ID。资源 ID 仅适用于 APK 中的资源。您必须编辑或扩展 KenBurnsView class 以接受位图对象,例如通过添加如下函数:
public void setBitmaps(Bitmap... bitmaps) {
for (int i = 0; i < mImageViews.length; i++) {
mImageViews[i].setImageBitmap(bitmaps[i]);
}
}
然后您可以传递使用 drawable_from_url()
加载的位图您只是忘记将 setDoInput 添加到连接
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 (IOException e) {
e.printStackTrace();
return null;
}
}