Codenameone 从相机卷中选择的图像显示为黑屏

Codenameone 从相机卷中选择的图像显示为黑屏,codenameone,Codenameone,这个问题似乎在最后一天才开始 我有代码打开画廊,存储图像和显示它。如果图像太大(似乎超过130000字节),它只会显示一个黑屏。这是我的密码: String path = (String) ev.getSource(); InputStream stream = FileSystemStorage.getInstance().openInputStream(path); OutputStream out = FileSystemStorage.getInstance().openOutputS

这个问题似乎在最后一天才开始

我有代码打开画廊,存储图像和显示它。如果图像太大(似乎超过130000字节),它只会显示一个黑屏。这是我的密码:

String path = (String) ev.getSource();
InputStream stream = FileSystemStorage.getInstance().openInputStream(path);

OutputStream out = FileSystemStorage.getInstance().openOutputStream(FileSystemStorage.getInstance().getAppHomePath() + movePath);
Util.copy(stream, out);

Image image = Image.createImage(path);
ScaleImageLabel fillLabel = new ScaleImageLabel(image);
fillLabel.setBackgroundType(Style.BACKGROUND_IMAGE_SCALED_FILL);
imageVideoContainer.add(BorderLayout.CENTER, fillLabel);
就像我说的,我确信这是我上一次在几天前建造它的时候起作用的。3.5中是否有任何可能影响这一点的变化?这似乎只发生在iOS上。
谢谢。

如果这是任何其他时间点,我都需要调查。然而,由于我们处于刚刚退出的3.5代码冻结期,我们从2016年7月27日到8月5日(本周五)这一周没有进行服务器更新

所以我怀疑这是我们处理图像方式的改变

有几件事可能是造成这种情况的原因:

  • 操作系统更新破坏了一些东西

  • 这总是被打破,但由于繁殖过程中的微小变化,很难注意到

  • 我们做了一个改变,上一次良好的构建是一个多星期前

  • 我不知道是不是1,所以让我们检查3和2。对于3,让我们看一下提交历史记录:

    请注意,今天(2016年8月3日)提交的更改尚未在构建服务器中

    查看代码唯一看起来有点可疑的是getRGB更改,但您所做的调用无法访问该代码。请注意,您通常可以使用3.4并根据3.4进行构建,以验证这不是代码中的回归,但我不确定3.4中是否存在
    ScaledImageLabel

    假设这是2,之前有东西坏了。由于您正在从相机胶卷中抓取图片,因此可能会获得非常高分辨率的图像。要证明这是一个问题,请尝试以下方法:

    ScaleImageLabel fillLabel = new ScaleImageLabel(image.scaledWidth(300));
    

    假设工作正常,这可能意味着图像大小(宽度/高度)超过了设备上的GPU限制。这是一个可以解决的问题,你可以先用一个稍微小一点的图像来开始,例如,你可以使用
    ImageIO来代替复制图像。保存
    ,这样可以预先缩放所述图像。

    如果这是我需要调查的任何其他时间点。然而,由于我们处于刚刚退出的3.5代码冻结期,我们从2016年7月27日到8月5日(本周五)这一周没有进行服务器更新

    所以我怀疑这是我们处理图像方式的改变

    有几件事可能是造成这种情况的原因:

  • 操作系统更新破坏了一些东西

  • 这总是被打破,但由于繁殖过程中的微小变化,很难注意到

  • 我们做了一个改变,上一次良好的构建是一个多星期前

  • 我不知道是不是1,所以让我们检查3和2。对于3,让我们看一下提交历史记录:

    请注意,今天(2016年8月3日)提交的更改尚未在构建服务器中

    查看代码唯一看起来有点可疑的是getRGB更改,但您所做的调用无法访问该代码。请注意,您通常可以使用3.4并根据3.4进行构建,以验证这不是代码中的回归,但我不确定3.4中是否存在
    ScaledImageLabel

    假设这是2,之前有东西坏了。由于您正在从相机胶卷中抓取图片,因此可能会获得非常高分辨率的图像。要证明这是一个问题,请尝试以下方法:

    ScaleImageLabel fillLabel = new ScaleImageLabel(image.scaledWidth(300));
    

    假设工作正常,这可能意味着图像大小(宽度/高度)超过了设备上的GPU限制。这是一个可以通过使用稍微小一点的图像来解决的问题,例如,您可以使用
    ImageIO来代替复制图像。保存
    ,这样可以预先缩放所述图像。

    我尝试过缩放图像,但仍然没有用。我确认这只发生在高分辨率的照片上。而我一周前开发的应用程序似乎并没有出现这种情况。也许我改变了一些我找不到的东西。无论如何,使用ImageIO.save保存一个较小的版本,然后将其用于显示已经起到了作用,这样就可以了。另外,3.4版不可供我构建?谢谢。当你使用专业帐户登录后,你可以使用登录按钮选择3.4版。Eclipse只给我提供了3.3版,然后是最新版本。你有旧版本的插件吗?另外,在新的Codename One设置界面中签出:右键单击项目->Codename One->Codename One设置。看这个:我试着缩放它,但还是没用。我确认这只发生在高分辨率的照片上。而我一周前开发的应用程序似乎并没有出现这种情况。也许我改变了一些我找不到的东西。无论如何,使用ImageIO.save保存一个较小的版本,然后将其用于显示已经起到了作用,这样就可以了。另外,3.4版不可供我构建?谢谢。当你使用专业帐户登录后,你可以使用登录按钮选择3.4版。Eclipse只给我提供了3.3版,然后是最新版本。你有旧版本的插件吗?另外,在新的Codename One设置界面中签出:右键单击项目->Codename One->Codename One设置。见此: