zoukankan      html  css  js  c++  java
  • PHP生成缩略图(2)--等比缩略图

    分析:

    当原图是横屏或竖屏的时候,希望缩略图会保持原来的比例缩放,不改变原图的完整性,即等比缩放!

    此时只需确定原图的宽高,以及目标图的最大宽高,比较目标图的宽高比例与原图的宽高比例的大小,以此来判断原图是横屏或竖屏来确定以高或宽为标准即可!

    代码如下:

    //求目标图片的宽高
    if ($max_width/$max_height < $src_width/$src_height) {
        
        $dst_w = $max_width;    //以宽为标准
        $dst_h = $max_width * $src_height/$src_width;
    }else{
        
        $dst_h = $max_height;   //以高为标准
        $dst_w = $max_height * $src_width/$src_height;
    }

    完整代码如下:

    <?php
    
    //目标图片最大宽高
    $max_width = 300;
    $max_height = 300;
    
    //创建一个真彩色的图像,支持的颜色数较多
    $dst = imagecreatetruecolor($max_width, $max_height); //目标图宽高
    $src = imagecreatefromjpeg('./01.jpg'); //源图
    
    $src_width = imagesx($src);    //源图的宽度
    $src_height = imagesy($src);    //源图的高度
    
    //求目标图片的宽高
    if ($max_width/$max_height < $src_width/$src_height) {
        
        //横屏图片以宽为标准
        $dst_w = $max_width;
        $dst_h = $max_width * $src_height/$src_width;
    }else{
        
        //竖屏图片以高为标准
        $dst_h = $max_height; 
        $dst_w = $max_height * $src_width/$src_height;
    }
    
    //在目标图上显示的坐标位置
    $dst_x = (int)(($max_width-$dst_w)/2);
    $dst_y = (int)(($max_height-$dst_h)/2);
    
    //生成缩略图
    imagecopyresampled($dst,$src,$dst_x,$dst_y,0,0,$dst_w,$dst_h,$src_width,$src_height);
    
    //输出到浏览器
    header('content-type:image/png');
    imagepng($dst);
    
    //销毁图片资源
    imagedestroy($dst);
    imagedestroy($src);
    
     ?>

    结果如下:

    竖屏图片

    横屏图片:

  • 相关阅读:
    JavaScript——面向对象的程序设计——创建对象与继承
    JavaScript 引用类型
    JavaScript 变量、作用域和内存问题
    JavaScript基本概念——操作符
    JavaScript基本概念
    在HTML中使用JavaScript
    JavaScript简介
    记录前端遇到的坑
    第八次作业
    电脑上下载b站视频到本地
  • 原文地址:https://www.cnblogs.com/zxf100/p/6744101.html
Copyright © 2011-2022 走看看