![](/img/trans.png)
[英]How to send JPG over TCP from one Windows Phone to another? I already managed sending text
[英]How to send Motion JPEG through internet to Windows phone over TCP
我想將運動JPEG從我的計算機發送到具有全局ip 89.232.123.122
的Windows Phone電話。 如何與該手機建立連接並通過該連接推送mjpeg?
要發送多媒體(例如運動JPEG),請使用UDP而不是TCP。
在發送方使用以下代碼:
UdpClient sendFrame = new UdpClient();
// your image is img:
Bitmap img = new Bitmap("pic.png");
// always send image
while (true)
{
MemoryStream memory_Stream = new MemoryStream();
// convert bitmap to jpg
SaveJPG100(img, memory_Stream);
byte[] byte_Of_Frame = memory_Stream.ToArray();
// send data on port 2000 on remote host
sendFrame.Send(byte_Of_Frame, byte_Of_Frame.Length,"89.232.123.122",2000);
}
//將btm轉換為jpg
public void SaveJPG100(Bitmap bmp, System.IO.Stream stream)
{
EncoderParameters encoderParameters = new EncoderParameters(1);
encoderParameters.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, 100L);
bmp.Save(stream, GetEncoder(ImageFormat.Jpeg), encoderParameters);
}
// generate jpg description
public ImageCodecInfo GetEncoder(ImageFormat format)
{
ImageCodecInfo[] codecs = ImageCodecInfo.GetImageDecoders();
foreach (ImageCodecInfo codec in codecs)
{
if (codec.FormatID == format.Guid)
{
return codec;
}
}
return null;
}
在接收方使用此代碼
UdpClient receiveFrame = new UdpClient(2000);
// recieve data from any ip address and any port
IPEndPoint remote = new IPEndPoint(IPAddress.ANY, 0);
while (true)
{
byte[] byte_Of_Frame = receiveFrame.Receive(ref remote);
MemoryStream ms = new MemoryStream(byte_Of_Frame);
pictureBox1.Image=(new Bitmap(ms));
}
您必須具有網絡服務,並將您的圖片上傳到網絡服務,並將其保存在服務器或數據庫中,但我建議將其保存在服務器中...
在Web Service中:
[WebMethod]
public string UploadFile(byte[] f, string fileName)
{
try
{
MemoryStream ms = new MemoryStream(f);
FileStream fs = new FileStream
(System.Web.Hosting.HostingEnvironment.MapPath("~/ArchiveImages/") +
fileName, FileMode.Create);
ms.WriteTo(fs);
ms.Close();
fs.Close();
fs.Dispose();
return "ok";
}
catch (Exception ex)
{
return ex.Message.ToString();
}
}
並在客戶端應用程序中:
private void UploadFile(string filename)
{
try
{
ArchiveServiceObj.ArchiveServiceSoapClient srv = new ArchiveServiceObj.ArchiveServiceSoapClient();
MemoryStream stream = new MemoryStream();
picscannedimage.Image.Save(stream, System.Drawing.Imaging.ImageFormat.Jpeg);
byte[] pic = stream.ToArray();
string sTmp = srv.UploadFile(pic, filename + ".jpg");
MessageBox.Show("File Upload Status: " + sTmp, "File Upload");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message.ToString(), "Upload Error");
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.