c#Socket传送jpg图片

c#Socket传送jpg图片

2023年7月15日发(作者:)

有另一种方法,来实现

把你这个图片用Graphics对象缩小,然后再发送出去就可以了,一些视频就是这样做的。代码如下:

C# code

using System;

using g;

using tions;

using entModel;

using ;

using ;

using ;

using s;

using ing;

using ;

using g;

using g2D;

...

//远端客户机

private EndPoint remotePoint=new IPEndPoint(,0);

private Thread myThread;

public Form1()

{

//

// Windows 窗体设计器支持所必需的

//

InitializeComponent();

myThread=new Thread(new ThreadStart(ListenUdp));

();

//

// TODO: 在 InitializeComponent 调用后添加任何构造函数代码

//

}

///

/// 清理所有正在使用的资源。

///

protected override void Dispose( bool disposing )

{

if(myThread!=null){();}

if( disposing )

{

if (components != null)

{ e();

}

}

e( disposing );

}

...

public webcam wcam=null;

private void Form1_Load(object sender, rgs e)

{

wcam=new

webcam(,0,0,,);

();

}

private void btnSend_Click(object sender, rgs e)

{

d=true;

al=100;

}

public void ListenTcp()

{

IPEndPoint ipep=new IPEndPoint(,9050);

Socket ListenSock=new

Socket(etwork,,);

(ipep);

(10);

Socket client=();

IPEndPoint clientipep=(IPEndPoint)EndPoint;

NetworkStream ns=new NetworkStream(client);

while(true)

{

=ream(ns);

}

}

public void sentMsgTcp(Image myPic)

{

IPEndPoint ipep=new IPEndPoint((),9050);

Socket SendSocket=new

Socket(etwork,,);

t(ipep);

NetworkStream ns=new NetworkStream(SendSocket);

//把图片以Bmp格式写入流ns

(ns,);

();

();

}

public void ListenUdp()

{

byte[] data;

int recv;

IPEndPoint ipep=new IPEndPoint(,9050);

Socket ListenSock=new

Socket(etwork,,);

(ipep);

while(true)

{

data=new byte[20000000];

recv=eFrom(data,ref remotePoint);

//反序列化

object msgObj=alize(data);

Bitmap mybm=(Bitmap)msgObj;

//把图片放大充满容器,并给容器

=ChangImage(mybm,,);

}

}

public void sentMsgUdp(Image myPic)

{

byte[] sendData=new byte[20000000];

IPEndPoint ipep=new IPEndPoint((),9050);

Socket SendSocket=new

Socket(etwork,,);

sendData = ize(myPic);

(sendData,,,ipep);

(); }

private void timer1_Tick(object sender, rgs e)

{

IDataObject data;

Image bmap;

// Copy image to clipboard

ssage(,_CAP_EDIT_COPY, 0, 0);

// Get image from clipboard and convert it to a bitmap

data = aObject();

if (aPresent(typeof()))

{

bmap = ((Image)(a(typeof())));

//把图片变小,供传送

bmap=ChangImage(bmap,150,150);

sentMsgUdp(bmap);

}

}

//把原Image转成小的Image

public Image ChangImage(Image imageIn, int towidth,int toheight){

//新建一个bmp图片

Image bitmap = new Bitmap(towidth, toheight);

//新建一个画板

Graphics g = age(bitmap);

//设置高质量插值法

olationMode = ;

//设置高质量,低速度呈现平滑程度

ingMode = ality;

//清空画布并以透明背景色填充

(arent);

//在指定位置并且按指定大小绘制原图片的指定部分

age(imageIn, new Rectangle(0, 0, towidth, toheight),new Rectangle(0, 0,

,),);

return bitmap;

}

这是序列化的代码:

C# code

using System;

using ;

using ;

namespace VideoTransmission

{

///

/// FormatterHelper 序列化,反序列化消息的帮助类

///

public class FormatterHelper

{

public static byte[] Serialize(object obj)

{

BinaryFormatter binaryF = new BinaryFormatter();

MemoryStream ms = new MemoryStream(1024*10);

ize(ms, obj);

(0, );

byte[] buffer = new byte[(int)];

(buffer, 0, );

();

return buffer;

}

public static object Deserialize(byte[] buffer)

{

BinaryFormatter binaryF = new BinaryFormatter();

MemoryStream ms = new MemoryStream(buffer, 0, , false);

object obj = alize(ms);

();

return obj;

}

}

}

发布者:admin,转转请注明出处:http://www.yc00.com/xiaochengxu/1689409328a243412.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信