php GD库的使用

<?php

/**
 * 调整图片大小
 * $path图片的宽度大于$width则等比缩放
 * $path图片的高度大于$height切成多张图片
 * @param $path 图片地址
 * @param $width integer|string  图片宽度
 * @param @height integer|string 图片高度
 */
function imgResize($path, $width, $height) {
  // 存放生成的图片路径
  $imgPaths = array();
  // 获取图片宽度/高度/类型
  list($srcW, $srcH, $type) = getimagesize($path);
  $type -= 1;

  // 创建源图像
  $imagecreatefromFuns = array(‘imagecreatefromgif‘, ‘imagecreatefromjpeg‘, ‘imagecreatefrompng‘);
  $src = $imagecreatefromFuns[$type]($path);
  // 图片的宽度大于$width则等比缩放
  if( $srcW > $width ) {
    $dstHeight = $srcH * ($width / $srcW);
    // 新建一个真彩***像
    $dst = imagecreatetruecolor( $width, $dstHeight );
    imagecopyresampled($dst, $src,  0, 0, 0, 0, $width, $dstHeight, $srcW, $srcH);
    $src = $dst; 
    // 更新原图的宽度和高度
    $srcW = $width;
    $srcH = $dstHeight;
  }
  else {
    // 没有调整宽度
    $width = $srcW;
  }
  
  // 图片的高度大于$height切成多张图片
  if( $srcH > $height ) {
    // 切割的高度位置
    $srcY = 0;
    do {
      $dstHeight = ($srcY + $height > $srcH) ? ($srcH - $srcY) : ($height);
      $dst = imagecreatetruecolor( $width, $dstHeight );
      imagecopyresampled($dst, $src,  0, 0, 0, $srcY, $width, $dstHeight, $width, $dstHeight);
      $filePath = ‘./img/‘ . md5(microtime(true)) . ‘.jpg‘;
      $imgPaths[] = $filePath;
      ImageJpeg($dst, $filePath);
      is_resource($dst) and imagedestroy($dst);
      $srcY += $dstHeight;
    }while($srcY < $srcH);
  }
  else {
    // 如果高度符合 则将调整了原图(也有可能是调整了宽度之后的)保存为文件
    $filePath = ‘./img/‘ . md5(microtime(true)) . ‘.jpg‘;
    $imgPaths[] = $filePath;
    ImageJpeg($src, $filePath);
  }

  // 释放内存
  isset($src) and is_resource($src) and imagedestroy($src);
  isset($dst) and is_resource($dst) and imagedestroy($dst);

  return $imgPaths;
}

/**
 * 调整图片清晰度
 * @param string $path  图片路径
 * @param string $quality 清晰度
 * @return string 新的图片路径
 */
function reQuality( $path, $quality ) {
    $image_type = image_type_to_extension(exif_imagetype($path), false);
    $fun = "imagecreatefrom{$image_type}";
    $src = $fun($path);
    $newPath = generateUniqueFilePath(‘./img/‘);
    ImageJpeg($src, $newPath, $quality);
    return $newPath;
}

/**
 * 生成唯一的文件路径
 * @param $basePath string 文件夹路径
 * @param $suffix string
 * @return string 文件路径
 */
function generateUniqueFilePath($basePath, $suffix=‘.jpg‘) {
  $filePath = $basePath . md5(microtime(true)) . $suffix;
  return $filePath;
}

header(‘Content-Type:image/png‘);

$path = ‘./img/jjj.jpg‘;
$imgPaths = imgResize($path, 10000, 10000);
// reQuality($path, 1);


郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。