Home  >  Article  >  Backend Development  >  What is the code for php image rotation direction?

What is the code for php image rotation direction?

藏色散人
藏色散人Original
2022-11-03 09:29:371648browse

php code method to realize the image rotation direction is: 1. Create a php sample file; 2. Through "public static function base64Rotate($image, $rotate = '90', $savePath = false){. ..}" method to set the base64 image rotation; 3. Set the local image rotation through the "imageRotate" method.

What is the code for php image rotation direction?

The operating environment of this tutorial: Windows 7 system, PHP version 8.1, Dell G3 computer.

What is the php image rotation direction code?

php realizes image rotation

Recently there is a requirement to rotate the image uploaded by the front end 90° counterclockwise. This mainly requires the use of php The imagerotate method rotates the image. The specific implementation method is as follows:

<?php
 
namespace common\traits;
 
use Yii;
use yii\helpers\FileHelper;
 
/**
 * 图片旋转处理trait
 *
 * @author wangjian
 * @since 1.0
 */
class ImageRotate
{
 
    /**
     * base64图片旋转
     * @param $image 需要旋转的base64图片
     * @param string $rotate 逆时针旋转角度
     * @param false $savePath 保存的图片路径,false返回base64格式
     */
    public static function base64Rotate($image, $rotate = &#39;90&#39;, $savePath = false)
    {
        if (empty($image)) {
            return false;
        }
        if (preg_match(&#39;/^(data:\s*image\/(\w+);base64,)/&#39;, $image, $result)) {
            $type = $result[2];
            //设置临时目录
            $temporaryPath = &#39;/tmp/&#39;;
            $temporaryPath = dirname(Yii::getAlias(&#39;@common&#39;)) . &#39;/web&#39; . $temporaryPath;
            FileHelper::createDirectory($temporaryPath);
 
            //将原图保存到零食目录
            $temporaryImage = date(&#39;YmdHis&#39;) . rand(1000, 9999) . &#39;.&#39; . $type;
            if (file_put_contents($temporaryPath . $temporaryImage, base64_decode(str_replace($result[1], &#39;&#39;, $image)))) {
                $newImage = self::rotateImage($temporaryPath . $temporaryImage, $rotate); //旋转图片
                //删除临时文件
                @unlink($temporaryPath . $temporaryImage);
 
                ob_start();
                if ($savePath === false) { //返回base
                    imagepng($newImage);
                    $imageString = $result[1] . base64_encode(ob_get_contents());
                    @unlink($newImage);
                } else {
                    $imageString = imagepng($newImage, $savePath);
                }
                ob_end_clean();
 
                return $imageString;
            }
        }
 
        return false;
    }
 
    /**
     * 本地图片旋转
     * @param $image 需要旋转的本地图片
     * @param string $rotate 逆时针旋转角度
     * @param false $savePath 保存的图片路径,false返回替换原图
     */
    public static function imageRotate($image, $rotate = &#39;90&#39;, $savePath = false)
    {
        if (empty($image)) {
            return false;
        }
        //旋转图片
        $newImage = self::rotateImage($image, $rotate);
        ob_start();
        if ($savePath === false) {
            //替换原图
            $url = $image;
        } else {
            $url = $savePath;
        }
        $imageString = imagepng($newImage, $url);
        ob_end_clean();
        return $imageString;
    }
 
    /**
     * @param $file 需要旋转的图片
     * @param $rotate 逆时针旋转角度
     */
    private static function rotateImage($file, $rotate)
    {
        $imageSize = getimagesize($file);
        $imageSize = explode(&#39;/&#39;, $imageSize[&#39;mime&#39;]);
        $type = $imageSize[1];
 
        switch ($type) {
            case "png":
                $image = imagecreatefrompng($file);
                break;
            case "jpeg":
                $image = imagecreatefromjpeg($file);
                break;
            case "jpg":
                $image = imagecreatefromjpeg($file);
                break;
            case "gif":
                $image = imagecreatefromgif($file);
                break;
        }
        $rotateImage = imagerotate($image, $rotate, 0); //逆时针旋转
        //获取旋转后的宽高
        $srcWidth = imagesx($rotateImage);
        $srcHeight = imagesy($rotateImage);
        //创建新图
        $newImage = imagecreatetruecolor($srcWidth, $srcHeight);
        //分配颜色 + alpha,将颜色填充到新图上
        $alpha = imagecolorallocatealpha($newImage, 0, 0, 0, 127);
        imagefill($newImage, 0, 0, $alpha);
        //将源图拷贝到新图上,并设置在保存 PNG 图像时保存完整的 alpha 通道信息
        imagecopyresampled($newImage, $rotateImage, 0, 0, 0, 0, $srcWidth, $srcHeight, $srcWidth, $srcHeight);
        imagesavealpha($newImage, true);
 
        return $newImage;
    }
 
}

Specific use:

1: Base64 image rotation and output base64

ImageRotate::base64Rotate(&#39;base64图片&#39;, &#39;旋转角度&#39;);

2: Base64 image rotation and save

ImageRotate::base64Rotate('base64 image', 'rotation angle', 'save address');

3: Local image rotation

ImageRotate::imageRotate(&#39;本地图片地址&#39;, &#39;旋转角度&#39;, &#39;保存地址&#39;);

According to the above method we You can realize the image rotation function

Recommended learning: "PHP Video Tutorial"

The above is the detailed content of What is the code for php image rotation direction?. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn