2014.2.27合并图像

public byte[] TransPIc(string picpath) //将图片统一大小并转为byte

{

Image imgPhoto = Image.FromFile(picpath);

int oldx = imgPhoto.Width;

int oldy = imgPhoto.Height;

//新图片尺寸

int cx = 255;

int cy = 255;

if (oldx >= oldy)

cy =Convert.ToInt32(255 * Convert.ToDouble(oldy) / Convert.ToDouble(oldx));

if (oldx < oldy)

cx = Convert.ToInt32(255 * Convert.ToDouble(oldx) / Convert.ToDouble(oldy));

int dx = 255 - cx;

int dy = 255 - cy;

Image newImage = new Bitmap(255, 255);

Graphics g = Graphics.FromImage(newImage);

//清除画布,背景设置为白色

g.Clear(System.Drawing.Color.White);

// 设置画布的描绘质量

Image bm = new Bitmap(255,255); //先设置一空白图像

if (dx > 0) //竖排图像

{

//在原图像两侧各插入dx/2宽,255高的空白图像

//图像合并

bm = new Bitmap(dx/2, 255);

g.DrawImage(bm, 0, 0, dx/2, 255); //画布左侧添加空白

g.DrawImage(imgPhoto, dx/2, 0, cx, cy); //从dx/2处添加原竖排图像,此时x方向右端仍有dx/2的空白

g.DrawImage(bm, 255-dx/2, 0, dx/2, 0); //补上右侧的空白图像

}

if (dy > 0)

{

bm = new Bitmap(255, dy);

g.DrawImage(bm, 0, 0, dx, dy);

g.DrawImage(imgPhoto, dx, dy, cx, cy);

}

g.Dispose();

imgPhoto.Dispose();

MemoryStream ms = new MemoryStream();

newImage.Save(ms,System.Drawing.Imaging.ImageFormat.Jpeg);

byte[] imagedata = ms.GetBuffer();

newImage.Dispose();

ms.Dispose();

bm.Dispose();

return imagedata;

}

或者

//新图片尺寸

int cx = treatx;

int cy = treaty;

double r16_9 = 16.0 / 9.0;

Image imgPhoto = Image.FromFile(picpath);

int oldx = imgPhoto.Width;

int oldy = imgPhoto.Height;

int dltx = 0;

int dlty = 0;

if (oldx >= oldy) //正常横拍照片

{

double oldxyrate = Convert.ToDouble(oldx) / Convert.ToDouble(oldy);

if (oldxyrate > r16_9) //原图偏宽

{

int justx = Convert.ToInt32(oldy * r16_9);

dltx = (oldx - justx) / 2; //原图两侧各应该剪裁多少

}

else if (r16_9 > oldxyrate) //原图偏高

{

int justy = Convert.ToInt32(oldx / r16_9);

dlty = (oldy - justy) / 2; //原图上下各应该剪裁多少

}

}

if (oldy > oldx) //竖拍照片 也按9:16的标准

{

cx = treatxx;

cy = treaty;

double r9_16 = 9.0 / 16.0;

double oldxyrate = Convert.ToDouble(oldx) / Convert.ToDouble(oldy);

if (oldxyrate > r9_16) //原图偏宽

{

int justx = Convert.ToInt32(oldy * r9_16);

dltx = (oldx - justx) / 2; //原图两侧各应该剪裁多少

}

else if (r9_16 > oldxyrate) //原图偏高

{

int justy = Convert.ToInt32(oldx / r9_16);

dlty = (oldy - justy) / 2; //原图上下各应该剪裁多少

}

}

Image newImage = new Bitmap(cx, cy);

Graphics g = Graphics.FromImage(newImage);

g.DrawImage(imgPhoto, new Rectangle(0, 0, cx, cy), new Rectangle(dltx, dlty, imgPhoto.Width - 2 * dltx, imgPhoto.Height - 2 * dlty), GraphicsUnit.Pixel);

g.Dispose();

newImage.Dispose();

imgPhoto.Dispose();

return newImage;

时间: 2024-08-11 09:44:49

2014.2.27合并图像的相关文章

2014/07/27

这个时候的天气,总是阴晴不定,而且闷热到心情压抑.今天无所事事,除了看新闻了解一点实事外,其他时间都用来上网看视频.聊天,写的实习计划落下两天的时间了,明天加把劲把落下的学习补回来. 2014/07/27,布布扣,bubuko.com

2014.7.27日结

1.java中没有友元类,需要public,private,protected,package等关键字来限制 2.python单例模式的实现 http://blog.csdn.net/ghostfromheaven/article/details/7671853 3.命名法有匈牙利,骆驼,帕斯卡等命名法 http://wenku.baidu.com/link?url=Hgd5tK7JtP44gq5aH64bWh3zROvJOHFPUD78CQHKT8vyVyyb80eHjU5YtatpZic6M

paper 27 :图像/视觉显著性检测技术发展情况梳理(Saliency Detection、Visual Attention)

1. 早期C. Koch与S. Ullman的研究工作. 他们提出了非常有影响力的生物启发模型. C. Koch and S. Ullman . Shifts in selective visual attention: Towards the underlying neural circuitry. Human Neurobiology, 4(4):219-227, 1985. C. Koch and T. Poggio. Predicting the Visual World: Silenc

2014.09.27

1.其实也没什么可抱怨的.付出得不到同等回报大多都是因为你给予的并不是别人想要的,你损失的同时还给别人增加了负担. 2.在外国独自留学的朋友曾跟我说过这番话,分享给大家:这个世界没有那么多的感同身受,也不会每次你难过的时候都有好朋友听你苦水,父母问起来了,还得编造理由让他们安心.最后学会一个人也能生活.有什么难过就告诉给自己听,有多伤心就哭多久.过后振作起来就行.虽然听起来很残酷,但对自己最好.

2014/08/27

转眼间,周三了有木有,时间过的可真快,不过这周有六天要上班,所以还有整整四天的上班时间,这段时间过的有点慌里慌张,迷迷糊糊的起床,上班下班,回去后看看电视,依然很累,然后睡觉质量也不好,大多时间处于似睡似醒的状态,这大概是缺乏锻炼的缘故吧! 下周一刚好九月一日,从那天起,开始新的计划,上班期间努力工作,不开小差,下班后锻炼身体,再忙再累再多借口也得完成计划好的,PLANK.俯卧撑.引体向上.卧推.仰卧起坐都得有,循环渐进,周末上淘宝淘副哑铃,现在的重量不够刺激O(∩_∩)O 昨天接到一个活,要对

2014.8.27 Vs2005宏的使用

终于知道怎么像在Word里那样使用宏了! 1.vs2005必须装补丁1 2.在C:\Program Files (x86)\Common Files\microsoft shared\VSA\8.0\VsaEnv下的vsmsvr.exe.config和vsaenv.exe.config文件中的<runtime>下增加一行: <AllowDComReflection enabled="true"/> OK 3.可录制一个宏的框架,然后用alt+f8调出修改并设置名

2014.8.27 CAD数据结构

Rwy表中存放所有物理跑道,主键rwy_id,但没有跑道中心点坐标 rwy_direction表中存放所有所有逻辑跑道号,也没有跑道入口坐标.同一rwy_id对应有2条记录 rwy_cline_point中存放所有物理跑道的中心坐标和逻辑跑道的入口坐标,主键rwy_cline_poin_id,一个rwy_id对应有3条记录.区分此表中记录代表逻辑跑道还是物理跑道只能通过看其主键rwy_cline_point_id是否存在于逻辑跑道rwy_dirction表中的rwy_cline_point_id

周记 2014.12.27

1. 程序中如果使用线程,最好给线程一个名称,以方便监控.使用线程自己的命名可能会导致命名重复. 2. 测试代码的时候,如果某段代码效率特别差,可以通过注释部分代码的方式以确定问题代码的位置.测试的时候一定保证只有一部分代码在执行,排除其他干扰. 3. 接口可以继承接口,接口继承使用 extends. 4. 集群中使用浮动IP,有可能会出现问题,导致集群的服务运行特别缓慢.我们项目使用Hazelcast集群出的问题,最后修改为真实IP解决. 5. CRT连接界面可以重命名,以此来区分多个界面连接

(原)Eclipse Tomcat配置(2014.12.27——By小赞)

Eclipse中配置自己已经安装的Tomcat 首先为Eclipse安装Tomcat插件: 进入Tomcat插件下载页:http://www.eclipsetotale.com/tomcatPlugin.html 下载   解压   将解压文件 jar 包放到 Eclipse 安装目录的plugins目录下: 重启Eclipse,看到三只可爱的小猫咪,说明安装插件成功: 接下来是配置自己安装的Tomcat: 根据自己安装的Tomcat相应的选择版本和路径: 将项目部署到自己的Tomcat中: 点