竖向照片上传后变横向
程序员文章站
2022-06-28 20:40:48
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说明(、)