Java Android Bitmap.createBitmap过早超过src位图宽度

问题描述 投票:1回答:1

我有一个静态方法,应该加载带状图像,并在图像带的每个图块中返回一个Bitmap []。我使用了这样的方法,但是在桌面java中使用BufferedImages时效果很好,但这里没有太多。

这里是方法:

public static Bitmap[] loadImageStrip(Resources res,int resid,int tilesize){
        Bitmap temp1=BitmapFactory.decodeResource(res,resid);
        System.out.println(temp1.getWidth());
        System.out.println(temp1.getHeight());
        Bitmap[] returnbitmap = new Bitmap[temp1.getWidth()/tilesize];
        int iter=0;
        int xtilepos=0;
        while (iter<returnbitmap.length){
            System.out.println(xtilepos);
            returnbitmap[iter]=Bitmap.createBitmap(temp1,xtilepos,0,xtilepos+tilesize,tilesize);
            iter++;
            xtilepos+=tilesize;

        }
        return returnbitmap;

    }

当我看着logcat时,>

System.out.println(temp1.getWidth());

打印3584,但在xtilepos例外之前,它最多只能达到1792 ...可能大约是temp1宽度的一半。

在这种情况下,tilesize为128,returnbitmap.length为28,这是我的图像带中相同数量的子图像。

起初我并没有真正期待的是我使用的带状图像是896x32,最初用于我的一个桌面Java游戏中,但是在android上,一切似乎都乘以4。

我不知道为什么得到一个IllegalArgumentException:x + width必须为<= bitmap.width()

,当1792 +128 <3584

这是否是剥离图像太宽或其他问题?我需要制作双排或三排带状图像吗?

我有一个静态方法,应该加载带状图像,并在图像带的每个图块中返回一个Bitmap []。我使用了这样的方法,但是在桌面Java中使用BufferedImages时,效果很好...

java android android-bitmap
1个回答
0
投票

您正在传递x+width用于创建Bitmap,而不仅仅是宽度。

© www.soinside.com 2019 - 2024. All rights reserved.