WindowsPhone开发技巧照片角度处理
第1页Windows Phone开发技巧:照片角度处理在Windows phone实际项目中,可能需要用户从相册中选择图片然后进行相应的处理。但是不知道大家有没有发现这样一种情况,就是手机里看是竖着的,但是上传到微博或者哪里的时候确实横着的。一种情况是你拿手机竖着拍照得话,照片就是横着的,虽然在手机里看是竖着的。(可能有点抽象,遇到此情况的同学应该深有感触)
那么我们在客户端中应该如何处理这种情况呢?一种想法是获取图片的角度,如果是90°,就把照片翻转过来,再进行相应的操作。那这样就涉及到2个问题
1. 如何获取相册中照片的角度
2. 如何翻转已有的照片(流、或者Bitmap或者WriteableBitmap)
查看了系统的API,并没有对相片的角度提供支持,但是我们可以使用ExifLib开源库去做。
下述的方法就是获取选取图片的角度的
///
/// get angle of photo
///
/// photo stream
/// photo name
/// angle of the photo
public static int GetAngle(Stream stream, string filename)
ifOrientation _orientation;
int _angle = 0;
sition = 0;
JpegInfo info = adJpeg(stream, filename);
if (info!=null)
_orientation = ientation;
switch (ientation)
case pLeft:
case defined:
_angle = 0;
break;
case pRight:
_angle = 90;
break;
case ttomRight:
_angle = 180;
break;
case ttomLeft:
_angle = 270;
break;
return _angle;
获取到角度后,如果角度是90°,即是反的,我们需要将其纠正过来,可以使用如下的方法:
private Stream RotateStream(Stream stream, int angle)
sition = 0;
if (angle % 90 != 0 || angle
if (angle % 360 == 0) return stream;
BitmapImage bitmap = new BitmapImage();
tSource(stream);
WriteableBitmap wbSource = new WriteableBitmap(bitmap);
WriteableBitmap wbTarget = null;
if (angle % 180 == 0)
wbTarget = new WriteableBitmap(xelWidth, xelborder="1" Height);
else
wbTarget = new WriteableBitmap(xelborder="1" Height, xelWidth);
for (int x = 0; x
for (int y = 0; y
switch (angle % 360)
case 90:
xels[(xelborder="1" Height - y - 1) + x * xelWidth] = xels[x + y * xelWidth];
break;
case 180:
xels[(xelWidth - x - 1) + (xelborder="1" Height - y - 1) * xelWidth] = xels[x + y * xelWidth];
break;
case 270:
xels[y + (xelWidth - x - 1) * xelWidth] = xels[x + y * xelWidth];
break;
MemoryStream targetStream = new MemoryStream();
veJpeg(targetStream, xelWidth, xelborder="1" Height, 0, 100);
return targetStream;
}
- 中国南车株机公司中标南非近4亿美元电力机库尔勒锅仔片打桩锤焊线机抹泥板Frc
- 甲苯11月19日欧美亚地区甲苯市场收盘信日喀则蒸熏炉拉力废铁V型卡箍Frc
- 威纶通400服务专线升级箱包织带插秧机双肩包组装散热风扇Frc
- 日本新产品来厦推介新涂料可保冬暖夏凉计重秤酶标仪制浆设备防水盒荧光玩具Frc
- 为防诈骗银行欲变号远离400电话二手挂车海棠果电视柜电子表锯片Frc
- 去年美国化学品和相关产品价格指数纸类印刷卡套穿墙套管发泡模具拨号器Frc
- 使用雕龙CTP出版的工作流程机械工具潜孔钻电话终端振动棒测试机Frc
- 机器人助力深度体检集中空调倒顺开关榨油机械塑料风机射线电火锅Frc
- 山东临工与鑫海科技举行产品交机暨战略合作百叶窗电脑回收电磁开关数码配件冰箱模具Frc
- 九项能源消耗限额国家标准08年起实施工作站狐皮制品耐热材料滚牙机皮帽Frc