zoukankan      html  css  js  c++  java
  • 移动端上传图片iphone图片旋转以及服务端处理方法

    判断是否需要旋转

        /**
                 *iphone判断图片方向,是否需要旋转图片
                 */
                if(strpos($_SERVER['HTTP_USER_AGENT'], 'iPhone')&&in_array($ext, array('jpg','png','gif','jpeg','jepg'))){
                    $exif =exif_read_data($tmp);
                    switch ($exif['Orientation']){
                        case 6:
                            self::imgturn($tmp,1,$ext);
                            break;
                        case 3:
                            self::imgturn($tmp,1,$ext);
                            self::imgturn($tmp,1,$ext);
                            break;
                        case 8:
                            self::imgturn($tmp,2,$ext);
                            break;
                    }
                }

    一下是php旋转方法

    function imgturn($src, $direction = 1,$ext) {
            switch ($ext) {
                case 'gif' :
                    $img = imagecreatefromgif ( $src );
                    break;
                case 'jepg':
                case 'jpg' :
                case 'jpeg' :
                    $img = imagecreatefromjpeg ( $src );
                    break;
                case 'png' :
                    $img = imagecreatefrompng ( $src );
                    break;
                default :
                    die ( '图片格式错误!' );
                    break;
            }
            $width = imagesx ( $img );
            $height = imagesy ( $img );
            $img2 = imagecreatetruecolor ( $height, $width );
            // 顺时针旋转90度
            if ($direction == 1) {
                for($x = 0; $x < $width; $x ++) {
                    for($y = 0; $y < $height; $y ++) {
                        imagecopy ( $img2, $img, $height - 1 - $y, $x, $x, $y, 1, 1 );
                    }
                }
            } else if ($direction == 2) {
                // 逆时针旋转90度
                for($x = 0; $x < $height; $x ++) {
                    for($y = 0; $y < $width; $y ++) {
                        imagecopy ( $img2, $img, $x, $y, $width - 1 - $y, $x, 1, 1 );
                    }
                }
            }
            switch ($ext) {
                case 'jepg':
                case 'jpg' :
                case "jpeg" :
                    imagejpeg ( $img2, $src, 100 );
                    break;
                
                case "gif" :
                    imagegif ( $img2, $src, 100 );
                    break;
                
                case "png" :
                    imagepng ( $img2, $src, 100 );
                    break;
                
                default :
                    die ( '图片格式错误!' );
                    break;
            }
            imagedestroy ( $img );
            imagedestroy ( $img2 );
        }

  • 相关阅读:
    生产者消费者代码
    C++内存深入理解
    树、森林与二叉树的相互转换
    待卿长发及腰,我必凯旋回朝
    同一进程下的线程可以共享
    操作系统知识
    进程间通信方式
    从一个微型例子看“C/C++的内存分配机制”和“数组变量名与指针变量名”(转)

    AVL Tree 操作
  • 原文地址:https://www.cnblogs.com/sss-justdDoIt/p/6259339.html
Copyright © 2011-2022 走看看