精华内容
下载资源
问答
  • Android解决三星手机图片旋转问题

    千次阅读 2017-04-01 14:37:37
    给自己提醒,相信接触过图片选择的必定会遇到三星手机从相册或者是拍照之后拿到图片路径,获取Bitmap对象,图片大了还得对bitmap进行压缩,最后显示在ImageView上,就会发现照片会旋转90°(我遇见的,知道其他人...

    此文章只是记录自己在项目中遇到的问题,写下来,给自己提醒,相信接触过图片选择的必定会遇到三星手机从相册或者是拍照之后拿到图片路径,获取Bitmap对象,图片大了还得对bitmap进行压缩,最后显示在ImageView上,就会发现照片会旋转90°(我遇见的,不知道其他人旋转了多少度),解决办法也是比较方便快捷:


    1.通过图片路径得到图片的旋转角度

    public static int readPictureDegree(String path) {
            int degree = 0;
            try {
                ExifInterface exifInterface = new ExifInterface(path);
                int orientation = exifInterface.getAttributeInt(
                        ExifInterface.TAG_ORIENTATION,
                        ExifInterface.ORIENTATION_NORMAL);
                switch (orientation) {
                case ExifInterface.ORIENTATION_ROTATE_90:
                    degree = 90;
                    break;
                case ExifInterface.ORIENTATION_ROTATE_180:
                    degree = 180;
                    break;
                case ExifInterface.ORIENTATION_ROTATE_270:
                    degree = 270;
                    break;
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
            return degree;
        }


    2.根据图片的选装角度将图片旋转回去

    public static Bitmap rotateBitmapByDegree(Bitmap bm, int degree) {
            Bitmap returnBm = null;
    
            // 根据旋转角度,生成旋转矩阵
            Matrix matrix = new Matrix();
            matrix.postRotate(degree);
            try {
                // 将原始图片按照旋转矩阵进行旋转,并得到新的图片
                returnBm = Bitmap.createBitmap(bm, 0, 0, bm.getWidth(), bm.getHeight(), matrix, true);
            } catch (OutOfMemoryError e) {
                
            }
            if (returnBm == null) {
                returnBm = bm;
            }
            if (bm != returnBm) {
                bm.recycle();
            }
            return returnBm;
        }
    
    

    通过以上两部基本上就解决了,刚遇到的时候可能会让人头疼,不过解决了会那么容易,也许这就是小小的一点成长,加油吧


    展开全文
  • Android 三星手机拍照图片旋转处理

    千次阅读 2017-10-27 17:35:06
    三星拍照后,图片竟然是旋转

         三星拍照后,图片竟然是旋转的,众多手机唯有三星拍照是旋转的,但是你又不能不处理。

       首先你要先判断这张图片有木有旋转,图片都是自带这些信息的,方法如下:


     /**
         * 读取图片属性:旋转的角度
         *
         * @param path 图片绝对路径
         * @return degree旋转的角度
         */
        public static int readPictureDegree(String path) {
            int degree = 0;
            try {
                ExifInterface exifInterface = new ExifInterface(path);
                int orientation = exifInterface.getAttributeInt(
                        ExifInterface.TAG_ORIENTATION,
                        ExifInterface.ORIENTATION_NORMAL);
                switch (orientation) {
                    case ExifInterface.ORIENTATION_ROTATE_90:
                        degree = 90;
                        break;
                    case ExifInterface.ORIENTATION_ROTATE_180:
                        degree = 180;
                        break;
                    case ExifInterface.ORIENTATION_ROTATE_270:
                        degree = 270;
                        break;
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
            return degree;
        }

    当然三星手机拍照一般都是:

    degree = 90;

    如果degree != 0 ,就说明图片是旋转的。假设我们需要发送一张图片,不可能对原来路径下的图片进行修改,所以需要把要处理的图片在复制一份再进行处理;方法如下:


    /**
         * 复制文件
         *
         * @param oldPath
         * @param newPath
         */
        public static void copyFile(String oldPath, String newPath) {
            try {
                int bytesum = 0;
                int byteread = 0;
                File oldfile = new File(oldPath);
                if (oldfile.exists()) { //文件存在时
                    InputStream inStream = new FileInputStream(oldPath); //读入原文件
                    FileOutputStream fs = new FileOutputStream(newPath);
                    byte[] buffer = new byte[1444];
                    int length;
                    while ((byteread = inStream.read(buffer)) != -1) {
                        bytesum += byteread; //字节数 文件大小
                        System.out.println(bytesum);
                        fs.write(buffer, 0, byteread);
                    }
                    inStream.close();
                }
            } catch (Exception e) {
                System.out.println("复制单个文件操作出错");
                e.printStackTrace();
    
            }
    
        }

    最后再对相应的图片做旋转处理,先贴上图片旋转的处理方法:

     /**
         * 旋转图片
         *
         * @param angle
         * @param bitmap
         * @return Bitmap
         */
        public static Bitmap rotaingImageView(int angle, Bitmap bitmap) {
            // 旋转图片 动作
            Matrix matrix = new Matrix();
            matrix.postRotate(angle);
            // 创建新的图片
            Bitmap resizedBitmap = Bitmap.createBitmap(bitmap, 0, 0,
                    bitmap.getWidth(), bitmap.getHeight(), matrix, true);
            return resizedBitmap;
        }


    这里传入相应的角度和bitmap就行,最后贴上图片旋转处理的全部代码:

    /**
         * 旋转的图片生成正的
         *
         * @param path
         */
    
        public static void rotaingDegreeImage(String path) {
            BitmapFactory.Options bitmapOptions = new BitmapFactory.Options();
            //获取宽高度
            bitmapOptions.inJustDecodeBounds = true;
            BitmapFactory.decodeFile(path, bitmapOptions);
    
            /**
             * 计算sampleSize最优值
             */
            bitmapOptions.inSampleSize = computeSampleSize(bitmapOptions, -1, 2048 * 1536);
            bitmapOptions.inJustDecodeBounds = false;
            int degree = readPictureDegree(path);
            Bitmap cameraBitmap = BitmapFactory.decodeFile(path, bitmapOptions);
            /**
             * 把图片旋转为正的方向
             */
            cameraBitmap = rotaingImageView(degree, cameraBitmap);
            FileOutputStream out;
            try {
                out = new FileOutputStream(path);
                cameraBitmap.compress(Bitmap.CompressFormat.JPEG, 100, out);
            } catch (FileNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }

    这里还用到:
    computeSampleSize()

     /**
         * 计算sampleSize最优值
         *
         * @param options
         * @param minSideLength
         * @param maxNumOfPixels
         * @return
         */
        public static int computeSampleSize(BitmapFactory.Options options, int minSideLength, int maxNumOfPixels) {
            int initialSize = computeInitialSampleSize(options, minSideLength, maxNumOfPixels);
            int roundedSize;
            if (initialSize <= 8) {
                roundedSize = 1;
                while (roundedSize < initialSize) {
                    roundedSize <<= 1;
                }
            } else {
                roundedSize = (initialSize + 7) / 8 * 8;
            }
            return roundedSize;
        }

    中间调用:

     private static int computeInitialSampleSize(BitmapFactory.Options options, int minSideLength, int maxNumOfPixels) {
            double w = options.outWidth;
            double h = options.outHeight;
            int lowerBound = (maxNumOfPixels == -1) ? 1 : (int) Math.ceil(Math.sqrt(w * h / maxNumOfPixels));
            int upperBound = (minSideLength == -1) ? 128 : (int) Math.min(Math.floor(w / minSideLength), Math.floor(h / minSideLength));
            if (upperBound < lowerBound) {
                // return the larger one when there is no overlapping zone.
                return lowerBound;
            }
            if ((maxNumOfPixels == -1) && (minSideLength == -1)) {
                return 1;
            } else if (minSideLength == -1) {
                return lowerBound;
            } else {
                return upperBound;
            }
        }

    有了这几个方法。一切OK。


    展开全文
  • 手机上实现图片旋转

    2015-08-28 19:39:11
    实现类似小雷达的旋转,如下图所示 表示,使用rotateZ(360deg...这个东西的实现很简单,带有圆环的图片围绕图片中心旋转,此处旋转采用的是setTimeout(rotate(),100),用canvas画出,每100毫秒旋转多少度,设

    实现类似小雷达的旋转,如下图所示
    这里写图片描述
    表示,使用rotateZ(360deg)在电脑上杠杠的,手机上就是个坑啊!!!
    然后用了html5的canvas,直接度娘然后修改的,转起来不如用rotate(),然而苍蝇腿再小也是肉啊!
    这个东西的实现很简单,让带有圆环的图片围绕图片中心旋转,此处旋转采用的是setTimeout(rotate(),100),用canvas画出,每100毫秒旋转多少度,设置个flag,跳转下一页的时候停止转动。。。小头像的闪烁是一个动画效果,css3改变透明度,此处表示参考的网上代码~
    @keyframes flash {
    0% {
    opacity:0;
    }
    30% {
    opacity:1;
    }
    100% {
    opacity:0;
    }
    }
    唯一注意的就是在微信上要加上前缀-webkit-不然是没有变化滴~

    展开全文
  • 最近因为项目需要用到了bootstrap fileinput的插件,在使用苹果手机上传图片预览时,发现图片方向和手机本地存储方向一致问题。后来通过查询资料了解图片具有EXIF(Exchangeable Image File Format)旋转属性标识,...

    最近因为项目需要用到了bootstrap fileinput的插件,在使用苹果手机上传图片预览时,发现图片方向和手机本地存储方向不一致问题。后来通过查询资料了解图片具有EXIF(Exchangeable Image File Format)旋转属性标识,fileinput对旋转进行了处理。预览图片显示的为电脑图片存放方向。

    用iPhone手机通过home键朝向四个不同的方向进行拍照后,上传照片显示与预览图片方向并不一致。有点不明白其中缘由,后来发现了规则,只有Home键朝下和朝上的时候才会发现显示不一致问题。解决方案如下:


    fileinput.css、fileinput.min.css文件中,css样式旋转角度存在问题,修改以下样式就可以啦。关于图片旋转问题详见:http://www.cocoachina.com/ios/20150605/12021.html说的很详细呢。


    Home键朝下拍摄

    .rotate-6 {
        /*transform: rotate(90deg);原代码*/
        transform: rotate(270deg);
    }


    Home键朝上拍摄

    .rotate-8 {
        /*transform: rotate(270deg);原代码*/
        transform: rotate(90deg);
    }

    展开全文
  • 1、问题:在html5中利用canvas对上传图片压缩的时候,ios手机竖着拍照时,图片旋转90°,其他情况正常。 2、解决方法:获取拍照角度,对Ios竖着拍的照片进行角度处理 3、利用exif.js获取到照片的拍摄信息,这里...
  • 问题:Android 部分手机,app中显示本地图片没有被旋转,是正常的。但是上传服务器后,服务器上的图片是被旋转的,有被旋转90度的,也有被旋转180度的。 原因:部分手机拍照后,保存到本地是被旋转的,这个可以通过...
  • 网络上有许多的实现图片预览功能的案例,这些案例大部分都存在一个问题就是在手机等移动数码设备上,拍照成像后的预览图居然会被旋转。 实现预览的大概有以下几个过程: 监听文件选择框的 onchange事件; 通过...
  • 用SharePhoto获取本地相册图片时,三星手机显示的图片总是被旋转90度,如何在获取本地图片的时候直接显示正常的图样,求帮忙大神解答
  • 我们用手机网页上传图片时,经常会遇见图片旋转了的问题.用以下的方法就可以将图片上传时拨乱反正,给重新调整回来.  public class PicUtil {  /**  * 获取图片正确显示需要旋转的角度(顺时针)  * @return...
  • 移动端手机h5上传图片旋转90度

    千次阅读 2019-10-21 19:51:07
    移动端手机h5上传图片旋转90度的问题 h5页面调用相机正常情况下都是正常的,但是有些手机横着照相的时候就会正常的,iphone正确的拍照方式是横屏的,而用户往往是竖屏拍照上传的,就相当于照相机反转了90度,当你横屏...
  • 部分手机拍照完后 图片旋转角度90度,目前解决方法普遍都是通过图片路径,获取图片信息判断角度,然后转换角度。如下: /** * 读取图片属性:旋转的角度 * @param path 图片绝对路径 * @return degree旋转的...
  • 图片旋转处理,这一部分直接复制就好, function  rotateImg(img, direction,canvas) {    // 最小与最大旋转方向,图片旋转 4 次后回到原方向   var  min_step = 0;   var  max_step = 3;   if  (img...
  • 不管是做wap还是H5时,通过手机端上传的图片,在部分安卓机器上会出现图片横向显示,不管手机是竖着拍照还是横着拍照,都无法避免, 具体原因还清楚,目前经过测试觉得应该图片文件问题,缺少exif头文件,可通过...
  • 但是在自己的应用中从文件夹中读取图片裁剪时图片被旋转了,经过查资料发现有的系统拍完照片后把图片旋转了90度。(遇到的手机是小米6) 解决办法:图片的角度在图片的信息中,所以读取图片的旋转角度,然后给他旋转...
  • 这两天项目里出了一个妖异的问题,就是部分客户上传的图片旋转了90度。 刚开始收到这个反馈,我们都觉得很搞笑,一定是客户图片本身旋转了。。。。 因为这么多年,从没听说过有这种事。 可客户确认上传的图片没有...
  • 调用Android系统拍照功能后,三星手机(还有小米8,目前发现这两个机型)拍摄...你说你没事旋转照片干啥,实在是猜透其居心何在,纯粹是在给开发者制造麻烦啊! 解决办法是获取到拍照后照片被旋转的角度,再旋转...
  • 在三星手机上出现的问题,我的程序思路是调用照相,照相后直接调用裁剪,但是到系统裁剪那里就出现了问题,图片变成了横着呢,我想能否在调用裁剪的时候传一个值系统对图片进行旋转
  • 由于手机差异拍照,导入在电脑上会发现图片内容不是竖直的,可能会是旋转90°,这个情况就需要如下的脚本去批量旋转回正,可能会有不同程度的局限性。 思路:根据读图片exif获取拍照设备,旋转N个90° import ...
  • 最近项目在测试的时候,有图片上传的功能,在测试小米手机时,发现上传后的图片,从服务端取回时,图片发生了旋转,在网上查了下资料, 发现部分手机确实有这个问题,有问题则要处理。 处理方法就是获取图片旋转...
  • 做微信wap页项目的时候,遇到小米6拍照上传图片旋转的问题,后来查找资料得到Orientation,进行判断并运用canvas把图片旋转后再上传解决了问题exif.js读取图像的元数据...lt;script&gt; EXIF.getData(file, ...
  • 三星手机拍摄后的照片被旋转了90度,横着拍给你变成竖...在获取相机返回的回调方法onActivityResult()中,修复被旋转图片并取得修复后的图片路径,有了这个路径后就可以展示出来了 @Override public void onA...
  • 关于部分手机拍照上传的图片旋转了90度的c#解决方案原创 2017年11月29日 16:46:11 标签:图片上传 /手机 /旋转 /解决方案 26这两天项目里出了一个妖异的问题,就是部分客户上传的图片旋转了90度。刚开始收到这个反馈...
  • 最近又被测试MM找茬了,调用Android系统拍照功能后,三星手机拍摄后的照片被...你说你没事旋转照片干啥,实在是猜透其居心何在,纯粹是在给开发者制造麻烦啊! 解决办法是获取到拍照后照片被旋转的角度,再旋转回去就
  • 解决三星手机拍照后,图片旋转

    千次阅读 2016-05-06 17:36:00
    最近项目中遇到用三星手机拍照,图片会自动旋转,应该是三星内部系统的功能,然后需要是不让旋转,找到了方法。 原理就是,获取到图片,判断它的旋转角度,然后相应的旋转回来。 在拍照的返回结果中,获取到图片的...
  • 实际开发中我们经常会有拍照上传图片,或者上传头像的需求,但是经常会发现部分手机,例如三星等,拍照后的图片会产生不同角度的旋转,原因是这些手机拍照后会有一个自动旋转的过程,具体解决思路也很简单,我们来看...
  • 产生问题:通过拍照或相册回传的照片,直接传入后台,在用于展示的时候,照片角度出现问题,均规则的旋转了90度,从而导致体验效果变差! 问题思考:后台一般都是你怎么存的,它怎么给你拿出来!所以在这里就...
  • android关于手机拍照图片旋转问题

    千次阅读 2014-05-28 17:35:23
    相信大家在项目中经常要掉系统的拍照功能吧,但是我发现了一个问题,三星手机在调用系统摄像机的时候拍出的图片居然呗旋转过!遂网上找了一大把资料,但是众说纷坛,很多都没有时间解决问题。最后自己不断结合摸索,...
  • 在使用三星手机进行测试的时候发现图片角度发生了旋转,经资料查询,这是因为三星手机拍照的图片旋转角度是90度,而其他手机是0度。这样思路就出来了:先查询被旋转了多少度,然后再旋转回来。ok,下面上代码。 ...
  • 博客源址:解决android有的手机拍照后上传...遇到问题:有的手机拍摄的图片旋转90度,有的图片旋转了180度,有的手机是正常的,服务器要求的是正的,这样问题就来了,能用户发个照片在微博上看到的是被旋转了的啊,
  • Android之让图片匀速旋转效果

    千次阅读 2015-11-25 17:19:46
    图片匀速旋转 当我们更新的时候,需要把更新小图标旋转起来,废话,先爆照 介绍动画: Android 平台提供了两类动画,一类是 Tween 动画,即通过对场景里的对象不断做图像变换(平移、缩放、旋转)产生动画效果...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 30,498
精华内容 12,199
关键字:

如何让手机图片不旋转