Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android替代java.awt(BuffereImage和Raster)_Java_Android_Awt_Bufferedimage_Raster - Fatal编程技术网

Android替代java.awt(BuffereImage和Raster)

Android替代java.awt(BuffereImage和Raster),java,android,awt,bufferedimage,raster,Java,Android,Awt,Bufferedimage,Raster,在我最后一年的项目中,我正在开发一个android应用程序,它可以捕捉树叶的图像,并识别它来自什么类型的树。我有一个几乎完成的PC版本(用java开发),我正在开始将其移植到android。虽然BufferedImage和光栅构成了我程序的关键部分,但这是一个问题,因为android中缺少java.awt,因此这意味着我必须更改库 我正在使用一个由我的讲师开发的库,下面的方法使用光栅将BuffereImage转换为一个Neigage(在整个包中使用的一种类型) 我基本上是在问,除了java.aw

在我最后一年的项目中,我正在开发一个android应用程序,它可以捕捉树叶的图像,并识别它来自什么类型的树。我有一个几乎完成的PC版本(用java开发),我正在开始将其移植到android。虽然
BufferedImage
和光栅构成了我程序的关键部分,但这是一个问题,因为android中缺少
java.awt
,因此这意味着我必须更改库

我正在使用一个由我的讲师开发的库,下面的方法使用光栅将BuffereImage转换为一个Neigage(在整个包中使用的一种类型)

我基本上是在问,除了
java.awt
之外,我还可以使用android吗

代码如下:

public static int[][] readAsInts(String fileName) throws IOException {
    int[][] pixels;

    System.out.println("File: " + fileName);

    String [] types = ImageIO.getReaderFileSuffixes();
    for (int l = 0; l < types.length; l++) {
        System.out.println("Type " + l + ": " + types[l]);
    }
    File f = new File(fileName);
    BufferedImage bi;
    bi = ImageIO.read(f);

    int cols = bi.getWidth();
    int rows = bi.getHeight();

    System.err.println("Number of bands: " + bi.getRaster().getNumBands());
    Raster rast = bi.getRaster();

    pixels = new int[rows][cols];
    for (int r = 0; r < rows; r++) {
        rast.getSamples(0, r, cols, 1, 0, pixels[r]);
    }
    return pixels;
} // readAsInts
publicstaticint[]readAsInts(字符串文件名)引发IOException{
int[][]像素;
System.out.println(“文件:”+文件名);
String[]types=ImageIO.getReaderFile后缀();
for(int l=0;l
谢谢大家


编辑:对于任何不知道光栅存储BuffereImage的像素值以及带数(红色、绿色、蓝色、alpha)的人,此算法将像素值存储在2d数组(像素)中。

听起来您只是想使用位图,并能够在数组中操纵像素本身。这门课和它的方法一起浮现在我的脑海里。但请记住,移动设备上的内存要少得多。在处理大型位图时,很容易遇到内存不足的问题

另一条路线是使用NDK。我在这方面没有太多经验,但是
AndroidBitmap\u lockPixels
AndroidBitmap\u lockPixels
可能是一个很好的起点

最后,另一个应该表现良好的选项是使用


如果您只想将图像加载到
int
数组中,
Bitmap.getPixels
应该足够了。

您可以将
buffereImage
转换为PNG或JPEG,然后通过HTTP将其发送到安卓,安卓可以将PNG或JPEG转换回
Bitmap
并使用它。
当Android需要发送任何图像时,通过网络将其发送为PNG或JPEG,然后将PNG转换为 BuffeReimdia并将其应用到程序中。

由于不是每个人都记得<代码> java .AWT
(古历史!),您可以考虑解释您正在尝试使用的算法。好主意!我已经添加了光栅的简要说明,以及算法的作用。感谢您的帮助,我决定放弃使用的软件包,我正在编写自己的方法,使用位图而不是BuffereImage