Я использую C #, а Protobuf syntax = 3;
с GRPC
. В моем случае это выглядит так:
Я нашел способ изменить изображение на ByteArray, этот пример здесь для понимания следующей части моего ответа.
private static byte[] ImageToByteArray(Bitmap image)
{
using (var ms = new MemoryStream())
{
image.Save(ms, image.RawFormat);
return ms.ToArray();
}
}
Но затем я должен изменить Bytearray на ByteString из Protobuf3
byte[] img = ImageToByteArray(); //its method you can see above
ByteString bytestring;
using (var str = new MemoryStream(img))
{
bytestring = ByteString.FromStream(str);
}
Вы можете просто использовать ByteString.FromStream(MemoryStream)
без CopyFrom
метода.
Если мы посмотрим получателю этого сообщения, ему нужно изменить ByteString на ByteArray , чтобы, например, сохранить фотографию:
byte[] img = request.Image.ToByteArray(); //this is received message
И это все. У вас есть одинаковые байты с обеих сторон.