Задать вопрос

Как передать и принять картинку через сокет?

Добрый день

пытаюсь сделать отправку скриншота на сокет
Сокет сервер на PHP, клиент на c#

Вот отправка данных
Graphics graph = null;
                            var bmp = new Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height);
                            graph = Graphics.FromImage(bmp);
                            graph.CopyFromScreen(0, 0, 0, 0, bmp.Size);

                            System.IO.MemoryStream stream = new System.IO.MemoryStream();
                            bmp.Save(stream, System.Drawing.Imaging.ImageFormat.Jpeg);
                            byte[] imageBytes = stream.ToArray();

                            string base64String = Convert.ToBase64String(imageBytes);

                            byte[] sds = Encoding.UTF8.GetBytes("RRRIRRR"+ base64String  + "\r\n"); 

                            socket.Send(sds);


Вот прием
if(preg_match('/RRRIRRR/iu', $data)){
    echo 'Image'.PHP_EOL;

    $data = preg_replace('/RRRIRRR/iu', '', $data);
    file_put_contents('/tmp/s.jpg', base64_decode($data));
}


и в итоге получаю файл s.jpg который не является изображением

я так понимаю что я неправильно отправляю данные с клиента, но не понимаю где ошибка
(RRRIRRR сделал для того чтоб определить, приходит изображение или какие-то другие данные)
  • Вопрос задан
  • 609 просмотров
Подписаться 3 Простой 2 комментария
Пригласить эксперта
Ответы на вопрос 1
SilenceOfWinter
@SilenceOfWinter Куратор тега PHP
та еще зажигалка...
у тебя изображение закодировано в base64String , нужно декодировать на сервере
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы