当前位置: 首页 > 知识库问答 >
问题:

不能从图像文件创建位图

田晨
2023-03-14

作为程序的一部分,我需要显示属于一个文件夹(JPG文件)的图像。为此,我有以下代码:

private ArrayList<ImageGalleryItem> getData() {
    final ArrayList<ImageGalleryItem> imageItems = new ArrayList<>();
    try {
        Intent intent = getIntent();
        String imagesFolder = intent.getStringExtra("SourceFolder");
        String questionId = Integer.toString(intent.getIntExtra("QuestionId", 0));
        File file = new File(imagesFolder);
        if (file.exists() && file.isDirectory()) {
            File[] files = file.listFiles();
            for (File f : files) {
                try {
                    if (f.getName().startsWith(questionId + "_")) {
                        Bitmap bitmap = BitmapFactory.decodeFile(f.getPath());
                        imageItems.add(new ImageGalleryItem(bitmap, f.getName()));
                    }
                }
                catch (Exception e)
                {
                    Log.e("TDC@", e.getMessage());
                }
            }
        }
    }
    catch (Exception e)
    {
        Log.e("TDC@", e.getMessage());
    }

    return imageItems;
}
    try {
        bm = nativeDecodeByteArray(data, offset, length, opts);

        if (bm == null && opts != null && opts.inBitmap != null) {
            throw new IllegalArgumentException("Problem decoding into existing bitmap");
        }
        setDensityFromOptions(bm, opts);
    } finally {
        Trace.traceEnd(Trace.TRACE_TAG_GRAPHICS);
    }

如果我在移动文件管理器中浏览该文件,并打开该文件,它是正确的显示,所以,图像格式没有问题。此外,该图像是用相机拍摄的,与其他正确解码的图像相同。

如何解决这个问题,或者,有没有替代的方法来做到这一点?

共有1个答案

胥英奕
2023-03-14

我不知道为什么会这样。试试这个:

Bitmap Bitmap=bitmapfactory.decodeStream(new FileInputStream(f));

 类似资料:
  • 问题内容: 通过这种方式获得字节数组- 现在我如何从字节数组重建此灰度图像? 我对ARGB,RGB或灰度图像了解不多。我试过了- 当我绘制此图像时,它不是黑白的,而是橙色和灰色的东西。 问题答案: 如果我向您解释如何从ARGB / RGB 2灰度转换,希望对您有所帮助,因为它有太多未知的函数和类:P ARGB为32位/像素,因此每个通道为8位。Alpha通道是不透明度,因此与透明度相反,因此0是透

  • 问题内容: 我现在可以编译ffmpeg并将其添加到项目创建的Android.mk文件的jni文件夹中,我想使用ffmpeg从存储在静态arraylist中的图像创建视频文件 我已经搜索了很多,但找不到任何教程,对此表示感谢。 问题答案: 我也有类似的需求,并且达到了相同的目的。您可以通过两种方式执行此操作。我想先分享一个简单的例子。 在Android内部创建一个临时文件夹。 将图像复制到新文件夹中

  • 问题内容: 我正在尝试创建不可见的AWT组件的图像(屏幕快照)。我无法使用类的屏幕捕获功能,因为该组件在屏幕上不可见。尝试使用以下代码: 有时可以使用,但是如果该组件包含诸如文本框或按钮之类的东西,或者某种OpenGL / 3D组件(这些东西不在图像中!),则不起作用。如何拍摄整个画面的适当截图? 问题答案: 很好的问题,我自己不时考虑这个问题! 正如您已经写过的,将重量级组件(例如3D和AWT)

  • 我的任务是: 创建一个TBitmap对象 如何在Delphi XE中做到这一点?

  • 我是第一次使用openCV。我正在使用openCV3和XCode对其进行编码。我想创建一个16位的灰度图像,但我想我有的数据是这样定义的,4000是像素值为白色和0为黑色。我在int类型的数组中有这些像素的信息。如何创建Mat并将数组中的值分配给Mat?

  • 我正在尝试在Swiftui2.0Xcode 12.4中创建一个WebView视图,但它太新了,我找不到答案和最佳实践的好例子。对于下面的代码,我得到以下错误。 类型SwiftUIWebView不符合协议UIView表示 此外,配置设置已更改,我无法启用。正确地允许使用JavaScript。尝试将其添加到“perfs”会触发一个错误,抱怨不喜欢Bool。