问题标签 [bitmapfactory]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
11416 浏览

android - 如何使用 BitmapFactory.decode*() 指定位图格式(例如 RGBA_8888)?

我正在对 和 进行多次调用BitmapFactory.decodeFile()BitmapFactory.decodeResource()我想指定位图解码为的格式,例如 RGB_565 或 RGBA_8888。

目前,解码的位图格式似乎取决于传入的图像。或者,有没有办法将现有位图转换为特定格式?

这很重要的原因是,当我尝试使用 解码图像时jnigraphics,一些图像返回AndroidBitmapFormattype ANDROID_BITMAP_FORMAT_NONE,我认为这是无用的。有没有人更深入地了解为什么格式不是已知值?发生这种情况时,内置的图像选择器会正确显示以这种方式解码的图像,所以我认为必须有一种方法来处理它们。

感谢您的输入!

0 投票
2 回答
3294 浏览

java - 在 SurfaceView 上加载和显示 jpeg 的最快方法?

这是我最后一个问题的后续:Canvas is drawing too slow

现在我可以更快地绘制图像,我面临的问题是图像的实际加载时间太长了。

在我正在开发的应用程序中,用户能够连续播放视频帧(jpeg),就好像他正在实时观看视频一样。我一直在使用BitmapFactory.decodeFile()将每个 jpeg 加载到位图中。我无法一次加载所有图像,因为大约有 240 张图像,这会占用我所有的堆空间。我一直在做的是通过单独的线程一次将最多 6 个预加载到一个数组中,以减少每个图像显示所需的时间。

不幸的是,加载一张图片需要 50 到 90 毫秒,而且我需要每 42 毫秒显示一张图片。有没有更快的方法来加载图像?

为澄清起见,这些图像位于 SD 卡上的一个文件夹中,它们都是 720x480 的 jpeg。我以一半大小对它们进行采样以减少内存使用量。

0 投票
1 回答
2310 浏览

java - BitmapFactory.decodeFile 返回 null

我想从网络上的照片创建位图。首先我尝试使用BitmapFactory.decodeStream,但由于错误(http://code.google.com/p/android/issues/detail?id=6066)返回null。现在我正在保存图像然后使用BitmapFactory.decodeFile,但它仍然返回 null。

有什么想法有什么问题或其他解决方法吗?

谢谢!

0 投票
2 回答
983 浏览

android - 即使有 INTERNET 权限,也无法从连接中获取图像

我在尝试从远程 URL 创建位图时遇到了一些问题。这是片段:

我收到一条异常conn.connect()消息。它说 java.net.SocketException: Permission denied

我已经在清单中添加了权限:

我可以从我的计算机浏览器和模拟器浏览器加载图像。没有防火墙阻止我的互联网连接。尝试了几个 URL,但没有任何效果。

我是否正确打开连接?我应该改用 HttpConnection 吗?

0 投票
3 回答
3465 浏览

android - 大图像问题(java.lang.OutOfMemoryError:位图大小超出 VM 预算)

作为许多人,我也有大图像的问题。好的,这是我的代码。我在 stackoverflow 上找到了如何使用 BitmapFactory.Options 来解决这个问题。但在我的情况下,我不是从文件中获取图像。谁能告诉我如何使用已经在内存中创建的位图来做到这一点(我从手机上的相机中得到这张照片)

}

请告诉我如何解决我的问题?:( 在模拟器上我没有这个错误。但在真实设备上我看到这个错误(位图大小超过 VM 预算)问候,彼得。

0 投票
1 回答
1621 浏览

android - 使用在 .NET 上创建的字节数组在 Android 的 ImageViewer 小部件中显示图像

我有一堆图像存储在我的服务器数据库中,作为我想在我的 Android 应用程序中使用的字节数组。

字节数组是从 Windows Phone 7 应用程序中的图像创建的,因此使用 .NET 的 WriteableBitmap (wbmp) 保存到 IsolatedStorageFileStream (isfs):

在 Android 应用程序中,我有一个 ImageView 小部件,我试图用它来显示其中一张图像。我尝试使用 BitmapFactory 来解码字节数组(有效负载):

但这不起作用——当我单步调试调试器时,没有图像显示并且 bmp 为空。这似乎表明 BitmapFactory 无法正确解码字节数组。

对于 Windows Phone 7,我只需将 byte[](现实)加载到 MemoryStream(mstream)中,然后使用该 MemoryStream 调用 Bitmap(bmp)的 SetSource 方法:

所以然后在Android上,我尝试将字节数组读入MemoryFile,然后使用BitmapFactory加载MemoryFile的InputStream:

但这仍然行不通。

如何在 Android 中成功加载这种格式的字节数组来显示图像?

0 投票
2 回答
43244 浏览

android - 获取位图Android的大小

可能重复:
解码后的位图字节大小?

无论如何,我可以得到这个位图的大小吗?我尝试使用 getByteCount() 但我不能使用它?

有什么建议么?

0 投票
0 回答
931 浏览

android - 是什么导致 BitmapFactory.decodeFile() 返回 null?

我正在使用 BitmapFactory.decodeFile(String, Options) 加载通过单独服务从 Internet 下载的图像,有时它返回 null。我以为这是因为图像损坏或不完整,但我抓住了解码器,它正在查看一个实际上看起来完整的文件——无论如何我可以在 Windows 中查看它并且没有明显的故障或不完整的部分。

这让我不禁要问:什么情况下会导致 decodeFile(...) 返回 null?不完整、损坏或非图像文件显然是其中之一,但还有其他文件吗?我知道如果系统内存不足,这是记录在案的行为,但实际上我已经为此获取(并处理)OutOfMemoryError throwables。

我正在测试的平板电脑最近确实从 3.0 升级到了 3.1。此版本中的内存不足行为是否发生了变化?

更新

我刚刚在 logcat 中注意到这一行:

08-17 16:14:46.190: 调试/skia(3948): libjpeg 错误 105 < Ss=%d, Se=%d, Ah=%d, Al=%d> 来自 read_scanlines [640 841]

0 投票
3 回答
1738 浏览

java - Android BitmapFactory decodeFile 在它应该被调用之前被调用

我正在尝试在 ListView 中显示图像的缩略图。这些图像位于我的 SDCard 上的 Camera 文件夹中。我正在使用 BitmapFactory.decodeFile 读取图像。我想在文件被解码时显示一个 ProgressDialog。我试图先显示 ProgressDialog,然后在 for 循环中调用 decodeFile。直到 for 循环之后才会显示 ProgressDialog。在显示 ProgressDialog 之前,对 decodeFile 的调用似乎正在运行。

如何在我的 for 循环之前显示 ProgressDialog?

公共类 ActivityProgressBar 扩展 ListActivity {

}

我已经注释掉了对 progressDialog.dismiss() 的调用,以验证在 for 循环之后显示 ProgressDialog。为了便于阅读,我删除了在 ListView 中显示图像的代码行。我用我的日志验证了我仍在 for 循环中。

谢谢

0 投票
1 回答
1051 浏览

android - BitmapFactory 导致应用程序在方向更改时崩溃

我正在编写一个将字符串存储在 SQLite 数据库中的应用程序,它表示 /sdcard/ 上图像的文件路径。我在我的一项活动中有此代码onCreate()

该代码在我第一次加载活动时有效,但是当我在屏幕方向之间切换时,它会使我的应用程序崩溃。关于我能做些什么来解决这个问题的任何想法?我希望蜜蜂能够继续在方向之间切换,但我不需要每次都刷新。

另外,我有点新,所以如果可能的话,请尽量让你的答案不要太复杂。

请注意,该文件在所有情况下都存在。