zoukankan      html  css  js  c++  java
  • PHP图片裁剪_图片缩放_PHP生成缩略图

    在制作网页过程中,为了排版整齐美观,对网页中的图片处理成固定大小尺寸的图片,或是要截去图片边角中含有水印的图片,对于图片量多,每天更新大量图,靠人工PS处理是不现实的,那么有没有自动处理图片的程序了!下面介绍的是PHP图片裁剪,缩放功能!

    功能介绍:图片裁剪,图片缩放,把源图通过程序导出给定的尺寸;

    运用范围:生成文章缩略图,图片裁剪,截去图片水印部分

    案例效果:天气预报15天查询 ,(http://tqybw.net)网站中的小图片都是通过PHP代码自动生成的

    图格式支持:image/gif, image/jpeg, image/png.

    函数功能描术:根据自定义的目标图高宽, 按目标图高宽比裁剪、缩放源图.

    function imagecropper($source_path, $target_width, $target_height)
    {
    	$source_info   = getimagesize($source_path);
    	$source_width  = $source_info[0];
    	$source_height = $source_info[1];
    	$source_mime   = $source_info['mime'];
    	$source_ratio  = $source_height / $source_width;
    	$target_ratio  = $target_height / $target_width;
    
    	// 源图过高
    	if ($source_ratio > $target_ratio)
    	{
    		$cropped_width  = $source_width;
    		$cropped_height = $source_width * $target_ratio;
    		$source_x = 0;
    		$source_y = ($source_height - $cropped_height) / 2;
    	}
    	// 源图过宽
    	elseif ($source_ratio < $target_ratio)
    	{
    		$cropped_width  = $source_height / $target_ratio;
    		$cropped_height = $source_height;
    		$source_x = ($source_width - $cropped_width) / 2;
    		$source_y = 0;
    	}
    	// 源图适中
    	else
    	{
    		$cropped_width  = $source_width;
    		$cropped_height = $source_height;
    		$source_x = 0;
    		$source_y = 0;
    	}
    
    	switch ($source_mime)
    	{
    		case 'image/gif':
    			$source_image = imagecreatefromgif($source_path);
    			break;
    
    		case 'image/jpeg':
    			$source_image = imagecreatefromjpeg($source_path);
    			break;
    
    		case 'image/png':
    			$source_image = imagecreatefrompng($source_path);
    			break;
    
    		default:
    			return false;
    			break;
    	}
    
    	$target_image  = imagecreatetruecolor($target_width, $target_height);
    	$cropped_image = imagecreatetruecolor($cropped_width, $cropped_height);
    
    	// 图片裁剪
    	imagecopy($cropped_image, $source_image, 0, 0, $source_x, $source_y, $cropped_width, $cropped_height); 
    	// 图片缩放
    	imagecopyresampled($target_image, $cropped_image, 0, 0, 0, 0, $target_width, $target_height, $cropped_width, $cropped_height);
    
    	header('Content-Type: image/jpeg');
    	imagejpeg($target_image);
    	imagedestroy($source_image);
    	imagedestroy($target_image);
    	imagedestroy($cropped_image);
    }
    

      举例说明:

    <?php

    //源图片地址,大小为500x400;

    $image='/images/big.jpg';

    //截成100x80的缩略图

    imagecropper($image, 100, 80);

    ?>

    此图片功能经修改可以改成很多实用的PHP图片处理功能!大家理解其中的图片函数后就很容易运用了!

  • 相关阅读:
    MIne FirstBlog
    P6563 [SBCOI2020]一直在你身旁
    P6563 [SBCOI2020]一直在你身旁
    T122085 [SBCOI2020]时光的流逝
    LC 918. Maximum Sum Circular Subarray
    1026 Table Tennis
    LC 1442. Count Triplets That Can Form Two Arrays of Equal XOR
    LC 1316. Distinct Echo Substrings
    LC 493. Reverse Pairs
    1029 Median (二分)
  • 原文地址:https://www.cnblogs.com/auto6s/p/3389443.html
Copyright © 2011-2022 走看看