> 백엔드 개발 > PHP 튜토리얼 > PHP实现对png图像进行缩放的方法(支持透明背景),png缩放_PHP教程

PHP实现对png图像进行缩放的方法(支持透明背景),png缩放_PHP教程

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
풀어 주다: 2016-07-13 09:46:26
원래의
1045명이 탐색했습니다.

PHP实现对png图像进行缩放的方法(支持透明背景),png缩放

本文实例讲述了PHP实现对png图像进行缩放的方法。分享给大家供大家参考。具体实现方法如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

function smart_resize_image( $file, $width = 0, $height = 0, $proportional = false, $output = 'file', $delete_original = true, $use_linux_commands = false )

{

    if ( $height <= 0 && $width <= 0 ) {

      return false;

    }

    $info = getimagesize($file);

    $image = '';

    $final_width = 0;

    $final_height = 0;

    list($width_old, $height_old) = $info;

    if ($proportional) {

      if ($width == 0) $factor = $height/$height_old;

      elseif ($height == 0) $factor = $width/$width_old;

      else $factor = min ( $width / $width_old, $height / $height_old);

      $final_width = round ($width_old * $factor);

      $final_height = round ($height_old * $factor);

    }

    else {   

      $final_width = ( $width <= 0 ) &#63; $width_old : $width;

      $final_height = ( $height <= 0 ) &#63; $height_old : $height;

    }

    switch ($info[2] ) {

      case IMAGETYPE_GIF:

        $image = imagecreatefromgif($file);

      break;

      case IMAGETYPE_JPEG:

        $image = imagecreatefromjpeg($file);

      break;

      case IMAGETYPE_PNG:

        $image = imagecreatefrompng($file);

      break;

      default:

        return false;

    }

    $image_resized = imagecreatetruecolor( $final_width, $final_height );

    if ( ($info[2] == IMAGETYPE_GIF) || ($info[2] == IMAGETYPE_PNG) ) {

      $trnprt_indx = imagecolortransparent($image);

      // If we have a specific transparent color

      if ($trnprt_indx >= 0) {

        // Get the original image's transparent color's RGB values

        $trnprt_color  = imagecolorsforindex($image, $trnprt_indx);

        // Allocate the same color in the new image resource

        $trnprt_indx  = imagecolorallocate($image_resized, $trnprt_color['red'], $trnprt_color['green'], $trnprt_color['blue']);

        // Completely fill the background of the new image with allocated color.

        imagefill($image_resized, 0, 0, $trnprt_indx);

        // Set the background color for new image to transparent

        imagecolortransparent($image_resized, $trnprt_indx);

      }

      // Always make a transparent background color for PNGs that don't have one allocated already

      elseif ($info[2] == IMAGETYPE_PNG) {

        // Turn off transparency blending (temporarily)

        imagealphablending($image_resized, false);

        // Create a new transparent color for image

        $color = imagecolorallocatealpha($image_resized, 0, 0, 0, 127);

        // Completely fill the background of the new image with allocated color.

        imagefill($image_resized, 0, 0, $color);

        // Restore transparency blending

        imagesavealpha($image_resized, true);

      }

    }

    imagecopyresampled($image_resized, $image, 0, 0, 0, 0, $final_width, $final_height, $width_old, $height_old);

    if ( $delete_original ) {

      if ( $use_linux_commands )

        exec('rm '.$file);

      else

        @unlink($file);

    }

    switch ( strtolower($output) ) {

      case 'browser':

        $mime = image_type_to_mime_type($info[2]);

        header("Content-type: $mime");

        $output = NULL;

      break;

      case 'file':

        $output = $file;

      break;

      case 'return':

        return $image_resized;

      break;

      default:

      break;

    }

    switch ($info[2] ) {

      case IMAGETYPE_GIF:

        imagegif($image_resized, $output);

      break;

      case IMAGETYPE_JPEG:

        imagejpeg($image_resized, $output);

      break;

      case IMAGETYPE_PNG:

        imagepng($image_resized, $output);

      break;

      default:

        return false;

    }

    return true;

}

로그인 후 복사

希望本文所述对大家的php程序设计有所帮助。

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/1032795.htmlTechArticlePHP实现对png图像进行缩放的方法(支持透明背景),png缩放 本文实例讲述了PHP实现对png图像进行缩放的方法。分享给大家供大家参考。具体实...
관련 라벨:
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿