- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想从网络上的照片创建位图。首先,我尝试使用 BitmapFactory.decodeStream
但由于错误而返回 null (http://code.google.com/p/android/issues/detail?id=6066)。现在我正在保存图像,然后使用 BitmapFactory.decodeFile ,但它仍然返回 null。
有什么问题或其他解决方法的想法吗?
谢谢!
try {
URL uri = new URL("http://www.witzigundkraus.de/wp-content/uploads/2008/04/scooter-dj-munchen.jpg");
URLConnection connection = uri.openConnection();
Log.i(TAG, "connecting...");
connection.connect();
InputStream is = connection.getInputStream();
//BufferedInputStream bis = new BufferedInputStream(is, 8 * 1024);
File myfile = new File(getApplicationContext().getCacheDir(), "wallpaper.tmp");
myfile.createNewFile();
BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(myfile));
byte buf[]=new byte[1024];
int len;
while((len=is.read(buf))>0)
out.write(buf,0,len);
out.close();
is.close();
Log.d(TAG, String.valueOf(myfile.exists()));
Bitmap bmp = BitmapFactory.decodeFile(myfile.getName());
//Bitmap bmp = BitmapFactory.decodeStream(bis);
Log.i(TAG, "setting bitmap");
Matrix matrix = new Matrix();
int scale = canvas.getWidth()/bmp.getWidth();
matrix.postScale(scale, scale, bmp.getWidth(), bmp.getHeight());
//matrix.postScale(0.5F, canvas.getWidth()/bmp.getWidth());
Bitmap bmp2 = Bitmap.createScaledBitmap(bmp, canvas.getWidth(), canvas.getHeight(), true);
Paint p = new Paint();
p.setFilterBitmap(true);
try{
canvas.drawBitmap(bmp2, matrix, p);
}catch(NullPointerException exc){
//why do we get this??
Log.d(TAG, "NullPointerException drawing canvas. why?");
return;
}
} catch (MalformedURLException exc){
Log.e(TAG, exc.toString());
return;
} catch (IOException exc){
Log.e(TAG, exc.toString());
return;
}
6-30 17:16:14.558 2253 2253 E AndroidRuntime: java.lang.NullPointerException
06-30 17:16:14.558 2253 2253 E AndroidRuntime: at com.localfotos.MyWallpaperService$CubeEngine.drawCube(MyWallpaperService.java:212)
06-30 17:16:14.558 2253 2253 E AndroidRuntime: at com.localfotos.MyWallpaperService$CubeEngine.drawFrame(MyWallpaperService.java:159)
06-30 17:16:14.558 2253 2253 E AndroidRuntime: at com.localfotos.MyWallpaperService$CubeEngine.onSurfaceChanged(MyWallpaperService.java:109)
06-30 17:16:14.558 2253 2253 E AndroidRuntime: at android.service.wallpaper.WallpaperService$Engine.updateSurface(WallpaperService.java:543)
06-30 17:16:14.558 2253 2253 E AndroidRuntime: at android.service.wallpaper.WallpaperService$Engine.attach(WallpaperService.java:591)
06-30 17:16:14.558 2253 2253 E AndroidRuntime: at android.service.wallpaper.WallpaperService$IWallpaperEngineWrapper.executeMessage(WallpaperService.java:787)
06-30 17:16:14.558 2253 2253 E AndroidRuntime: at com.android.internal.os.HandlerCaller$MyHandler.handleMessage(HandlerCaller.java:45)
06-30 17:16:14.558 2253 2253 E AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:99)
06-30 17:16:14.558 2253 2253 E AndroidRuntime: at android.os.Looper.loop(Looper.java:136)
06-30 17:16:14.558 2253 2253 E AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:4425)
06-30 17:16:14.558 2253 2253 E AndroidRuntime: at java.lang.reflect.Method.invokeNative(Native Method)
06-30 17:16:14.558 2253 2253 E AndroidRuntime: at java.lang.reflect.Method.invoke(Method.java:521)
06-30 17:16:14.558 2253 2253 E AndroidRuntime: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
06-30 17:16:14.558 2253 2253 E AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
06-30 17:16:14.558 2253 2253 E AndroidRuntime: at dalvik.system.NativeStart.main(Native Method)
最佳答案
伙计,我还在我的应用程序中从互联网下载图像,它运行得很好。我用来下载的函数是:
public Bitmap download_Image(String url) {
Bitmap bm = null;
try {
URL aURL = new URL(url);
URLConnection conn = aURL.openConnection();
conn.connect();
InputStream is = conn.getInputStream();
BufferedInputStream bis = new BufferedInputStream(is);
bm = BitmapFactory.decodeStream(bis);
bis.close();
is.close();
} catch (IOException e) {
Log.e("Hub","Error getting the image from server : " + e.getMessage().toString());
}
return bm;
}
我设置了另一个线程来下载图像,以便 UI 线程继续可用。我使用了 AsyncTask (请参阅 here ),以便(简化的)doInBackground
函数类似于:
@Override
protected Void doInBackground(String... urls) {
return download_Image(urls[0]);
}
我认为this page在 android 的博客中很好地解释了与此问题相关的内容。
关于java - BitmapFactory.decodeFile 返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6537105/
我已经尝试了我在 stackoverflow 上找到的所有解决方案来解决这个问题,但都是徒劳的。运行以下代码时,mAlbumPhotoUri 为“/mnt/sdcard/photo/134214714
在我的应用程序中,我有一个文件: private File TEMP_PHOTO_FILE = new File(Environment.getExternalStorageDirectory(),
我正在尝试使用这个: BitmapFactory.decodeFile("logo.jpg") 与我的 apk 相比,我似乎没有将文件:logo.jpg 放在正确的位置。它应该去哪里? 附言我得到的错
我正在编写带有 ActionBar 选项卡和 ViewPager 的应用程序。我有两个标签和两个页面。第一页只是 Fragmet,第二页是 ListFragment。 在第一页中,我正在反转有关平台的
我正在处理多达 1200 张图像。在此处找到的先前问题的帮助下,我将其优化为可以处理 100 张图像到 500 张图像。现在,这就是我所拥有的: public Bitmap getBitmap(
我尝试了几种方法,但它总是返回“null”。 我想从相机文件夹中读取一个文件到一个位图对象中。 File camDir = new File(Environment.getExternalStorag
我正在尝试合并 2 张图片,所以我在此处搜索并看到了一个代码 fragment combining two png files in android Bitmap bottomImage = new
我有一个应用程序,您可以在其中从设备上的图库或照片文件夹中选择图像。所选文件的路径存储在 Intent 中,因此它们可以在 Activity 之间传递。我通过 intent.getDataString
我有一个文件本地保存到应用程序的私有(private)存储中。我已经验证它存在,但是每当我调用 BitmapFactory.decodeFile 它总是返回 null. 如果我将文件保存为资源并使用
我正在用相机 Activity 拍照,然后尝试从保存的位置读取它。不幸的是,位图由以下方式返回: Bitmap bimage = BitmapFactory.decodeFile( path ); 具
我想从网络上的照片创建位图。首先,我尝试使用 BitmapFactory.decodeStream 但由于错误而返回 null (http://code.google.com/p/android/is
BitmapFactory.decodeFile 仅当我从手机图库中选择图像时才会导致 outOfMemoryError,而不是当我从使用相机 Intent 拍摄的照片中选择图像时。我实际上在使用相机
我正在使用来自 here 的以下代码.我想压缩图像。 BitmapFactory.Options options = new BitmapFactory.Options(); options.inJu
我有一个程序可以从存储区中保存的全尺寸图像创建缩略图。我正在尝试使用 mockito 测试该功能,但它给了我以下错误: java.lang.RuntimeException:未模拟 android.g
我正在创建一个 Android 应用程序,您可以在其中将图像从位置 x 复制到位置 y。复制完成后,我想在 ImageView 中查看图片。我知道图像位置,但无论我尝试什么,我都无法创建它的 bitm
我将使用 Bitmap.compress() 方法压缩图像。 但是当我使用 bitmap = BitmapFactory.decodeFile() 获取 Bitmap 时,我得到了一个 null 对象
我有一个关于 BitMapFactory.decodeFile 的问题。 在我的应用中,我希望用户能够从他/她的设备中选择图像或拍照。然后必须将其显示在 ImageView (medication_p
当我从图库中选取图像时,如果图像大小大于 3 Mb,android 会出现 OutOfMemoryError。 BitmapFactory.Options options = new BitmapF
我正在使用 android 4.0.4,内核 3.0.8+ BitmapFactory.decodeFile 每隔一段时间就会返回一个空位图。 请注意,如果位图工厂加载位图失败,我会立即重试,最多 4
保存文件: FileOutputStream fo = null; try { fo = this.openFileOutput("test.png", Context.MODE_WO
我是一名优秀的程序员,十分优秀!