欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

竖向照片上传后变横向

程序员文章站 2022-04-09 07:52:34
1. 原始图片文件 右键属性->详细信息,此宽高比应该显示为竖向,上传后却变横向。 2.查看EXIF信息图片宽高和与 1 中的宽高是颠倒的,并不相同。(在线上传图片查看EXIF:https://exif.tuchong.com/)(Exif是英文Exchangeable Image File(可交换 ......

 

 

 1. 原始图片文件 右键属性->详细信息,此宽高比应该显示为竖向,上传后却变横向。

竖向照片上传后变横向

 

 

2.查看exif信息图片宽高和与 1 中的宽高是颠倒的,并不相同。(在线上传图片查看exif:)(exif是英文exchangeable image file(可交换图像文件)的缩写,相机文件设计标准,记录数码照片的属性信息和拍摄数据。

竖向照片上传后变横向

 

 

3.发现问题是 exif方向默认旋转90度

 竖向照片上传后变横向

 

 

 4.需代码顺时针方向旋转90度后此方向属性变0度,保存翻转后图片即正常。

 1             string filename = file.filename; //file为http上传文件
 2             string extname = path.getextension(filename);
 3             stream stream = file.inputstream;
 4             system.drawing.image image = system.drawing.image.fromstream(stream);
 5 
 6             byte orien = 0;
 7             var item = image.propertyitems.where(o => o.id == 274).tolist();
 8             if (item!=null && item.count() > 0)orien = item[0].value[0];
 9             if(orien == 6)
10             {
11                 image.rotateflip(rotatefliptype.rotate90flipnone);
12             }
13 
14             memorystream ms = new memorystream();
15             try
16             {
17                 if (extname.tolower().equals(".jpg"))
18                 {
19                     image.save(ms, imageformat.jpeg);
20                 }
21                 else
22                 {
23                     image.save(ms, image.rawformat);
24                 }
25 
26             }
27             catch
28             {
29                 image.save(ms, imageformat.memorybmp);
30             }

 

 

5. 代码里propertyitems的id为什么是274,orien 为什么是6(、)。

竖向照片上传后变横向

 

竖向照片上传后变横向

 

 

竖向照片上传后变横向

 

 

6.exif的orientation说明(、)

竖向照片上传后变横向

竖向照片上传后变横向