gpt4 book ai didi

android - 如何直接从字节数组显示 JPEG 图像(保存图像之前)?

转载 作者:太空宇宙 更新时间:2023-11-03 11:37:46 25 4
gpt4 key购买 nike

我正在从客户端套接字接收一个 jpeg 图像(图像大小:50KB)并保存在模拟器 SD 卡中。从那里我在 Imageview 中显示 jpg 图像。但是我想在将图像保存到 SD 卡之前显示图像,因为我们的 android 应用程序将从套接字接收连续图像,如果我按照接收、保存和显示方法进行操作,那么它会变得非常缓慢,所以要提高速度我想要仅从 ram 显示。为此,我需要将图像数组临时保存在 RAM 中。从那里我计划使用单独的线程来显示和保存。所以请指导我如何显示字节数组中的图像。

注意:我从套接字接收 JPEG 图像,而不是 .bmp 或 .gif 或 .png。

下面是我从 tcp 套接字接收图像的代码。 (它工作正常)(注意:这是在单独的线程中完成的,不要在 UI 线程中尝试。)

                    public byte[] mybytearray  = new byte[310000];
private int bytesRead=0;
private int current = 0;

ServerSocket serverSocket = new ServerSocket(SERVERPORT);
Socket client = serverSocket.accept();


try {

myDir=new File("/mnt/sdcard/saved_images");

if (!myDir.exists()){
myDir.mkdir();
}else{
Log.d("ServerActivity","Folder Already created" );
}

String fpath = "/image0001.jpg";
File file = new File (myDir, fpath);
if (file.exists ()) file.delete ();


InputStream is = client.getInputStream();
FileOutputStream fos = new FileOutputStream(file);
BufferedOutputStream bos = new BufferedOutputStream(fos);
bytesRead = is.read(mybytearray,0,mybytearray.length);
current = bytesRead;

do {
bytesRead = is.read(mybytearray, current, (mybytearray.length-current));
if(bytesRead >= 0) current += bytesRead;

} while(bytesRead > -1);

bos.write(mybytearray, 0 , current);

Log.d("ServerActivity","Reconstructing Image from array");

bos.flush();
bos.close();
fos.flush();
fos.close();
is.close();
client.close();
serverSocket.close();
} catch (Exception e) {
e.printStackTrace();
}

最佳答案

尝试将此代码 fragment 插入您的代码中:

do {
bytesRead = is.read(mybytearray, current, (mybytearray.length-current));
if(bytesRead >= 0) current += bytesRead;
} while(bytesRead > -1);

ByteArrayInputStream inputStream = new ByteArrayInputStream(myByteArray);
bitmap = BitmapFactory.decodeStream(inputStream);
ImageView picture = new ImageView(this);
picture.setImageBitmap(bitmap);

bos.write(mybytearray, 0 , current);

关于android - 如何直接从字节数组显示 JPEG 图像(保存图像之前)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14257604/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com