我编写了一个简单的nodejs ws websocket 服务器,它在客户端连接时提供二进制 jpeg 文件,如下所示:
import WebSocket = require("ws");
console.log("Websocket is starting...");
// Setup websocket
const wss = new WebSocket.Server({ port: 8080 });
wss.on("connection", function connection(webSocket) {
    console.log("Connected");
    webSocket.on("message", function incoming(message) {
        console.log("received: %s", message);
    });
    webSocket.on("error", function error(err) {
        console.log(err.error);
    });
    webSocket.send(binaryJpegFile);
});
这段代码有一个错误,因为它默认作为文本发送,所以我替换了:
webSocket.send(binaryJpegFile);
和:
webSocket.send(binaryJpegFile, {binary: true});
现在,我的颤振代码使用以下代码将二进制 jpeg 文件作为 Uint8List 接收:
  WebSocket socket;
  void handleWebSocket(data) {
    // Listen for incoming data. We expect the data to be a JSON-encoded String.
    print("WebSocket data received");
    if (data.runtimeType == String) {
      print("String received");
      String dataString = data;
      print(dataString.length);
      print(dataString);
    } else if (data.runtimeType == Uint8List) {
      print("Binary received");
      Uint8List binaryIntList = data;
      print(binaryIntList.lengthInBytes);
    } else {
      print("Unknown datatype recieved : " + data.runtimeType.toString());
    }
  }
  connect() async {
    if (socket == null) {
      socket = await WebSocket.connect('ws://localhost:8080');
      socket.listen(handleWebSocket);
    }
    socket.add('Hello, World!');
  }
  @override
  void initState() {
    super.initState();
    connect();
  }
任何人都可以提供有关如何将 Uint8List 转换为我可以绘制的 jpeg 文件的提示吗?
Hem*_*Raj 10
首先尝试Uint8List直接与Image.memory小部件一起使用。
例子:
new Image.memory(binaryIntList);
如果这没有按预期工作。
您可以使用imagedart 包首先将字节解码为Image对象,然后将其编码为您希望的格式。
例子:
import 'package:image/image.dart' as I; //So that this does not conflict with the Image widget
然后
I.Image _img = I.decodeImage(binaryIntList);
_img = I.encodeJpg(_img);
然后将其用作
new Image.memory(_img.getBytes());
希望有所帮助!
| 归档时间: | 
 | 
| 查看次数: | 12017 次 | 
| 最近记录: |