Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/183.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 从内存打开PNG文件并通过TCP套接字发送_Android_Inputstream_Android Storage - Fatal编程技术网

Android 从内存打开PNG文件并通过TCP套接字发送

Android 从内存打开PNG文件并通过TCP套接字发送,android,inputstream,android-storage,Android,Inputstream,Android Storage,我希望从我的android设备向运行python的计算机/raspberry pi发送一个图像。我已经使用下面的代码从我的windows笔记本电脑(运行java客户端)实现了通信 BufferedImage image = ImageIO.read (new File("C:/Users/****/OneDrive/Pictures/Om-nom.png")); s = new Socket("192.168.2.69",8000); ImageIO.write(image, "png", s.

我希望从我的android设备向运行python的计算机/raspberry pi发送一个图像。我已经使用下面的代码从我的windows笔记本电脑(运行java客户端)实现了通信

BufferedImage image = ImageIO.read (new File("C:/Users/****/OneDrive/Pictures/Om-nom.png"));
s = new Socket("192.168.2.69",8000);
ImageIO.write(image, "png", s.getOutputStream());
s.close();
但是,android不支持BuffereImage库(java.awt.image)。如何在android studio中实现类似的功能,以便在我的android设备上运行,即从设备内存中将PNG文件读取到字节缓冲区,然后将其发送到服务器PC

注意:我的文件的位置类似于下面的/storage/emulated/0/Downloads/frog-face_1f438.png


要获取图像,可以执行以下操作:

    // TODO check sdcard is available
    File directory = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS);
    File photoPath = new File(directory, "temp.jpg");

    BitmapFactory.Options options = new BitmapFactory.Options();
    options.inPreferredConfig = Bitmap.Config.ARGB_8888;
    final Bitmap bitmap = BitmapFactory.decodeFile(photoPath.getAbsolutePath(), options);
要发送到您的服务器,您可以使用okHttp客户端或使用何种协议与服务器通信

更新: 在清单中,您应该指出此权限

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

谢谢你的帮助。如果任何人在他们的应用程序中需要类似的功能(通过TCP套接字发送图像),我已经设法编写了一些在GitHub上可用的工作代码

GitHub存储库位于此处:

注意:我在GitHub上的代码包括一个python服务器和一个java客户机,设计用于在android上运行—在android Studio中编写


我使用TCP协议将数据传输到python服务器。代码看起来不错,但是我得到了一个权限错误。有什么可以添加到我的AndroidMainifest.xml中的吗?根据您的评论,非常感谢您提供的详细信息
// oncreate method or whereever you want to call your code 
        if (ContextCompat.checkSelfPermission(this, 
                Manifest.permission.WRITE_EXTERNAL_STORAGE)
                != PackageManager.PERMISSION_GRANTED) {
            ActivityCompat.requestPermissions(this,
                    new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},
                    STATUS_CODE);
        } else {
            // TODO run your code
        }


@Override
public void onRequestPermissionsResult(int requestCode,
                                       String permissions[], int[] grantResults) {
    switch (requestCode) {
        case STATUS_CODE: {
            // If request is cancelled, the result arrays are empty.
            if (grantResults.length > 0
                    && grantResults[0] == PackageManager.PERMISSION_GRANTED) {

                // TODO run your code
            } else {
                // TODO show warning
            }