PHP에서 GD로 이미지 크기를 조정할 때 3가지 해킹

8673 단어 phpimagesprogramming

1. 리샘플링을 기반으로 GD로 더 나은 안티앨리어싱



GD에는 형편없는 앤티앨리어싱 구현이 있지만 간단한 해킹으로 빠르게 수정할 수 있습니다.

<?php

$im = imagecreatetruecolor(4000, 3000);
imageantialias($im, true);

$c_black = imageColorAllocate($im, 0,0,0);
$c_green = imageColorAllocate($im, 46,204,64);

imagefilledellipse($im, 2000, 1500, 800, 800, $c_green);

$imf = imagecreatetruecolor(400, 300);
imagecopyresampled($imf, $im, 0,0,0,0, 400,300,4000,3000);

imagePng($imf, '/tmp/image.png');


  • 4000, 3000 - 큰 크기의 초기 이미지를 생성했습니다(결과에 필요한 것의 10배),
  • imagecopyresampled - 이제 원본 큰 이미지(4000x3000)의 크기를 결과 이미지(400x300)로 조정하여 더 나은 앤티앨리어싱을 적용합니다.

  • Open original 또는 edit on Github .

    2. 비율에 맞게 이미지 크기 조정




    <?php
    
    $file = '/var/www/examples/heroine.png';
    $size = getimagesize($file);
    $im = imagecreatefrompng($file);
    
    $w = 400;
    $h = $w * $size[1] / $size[0];
    
    $imf = imagecreatetruecolor($w, $h);
    imagecopyresampled($imf, $im, 0,0,0,0, $w,$h,$size[0],$size[1]);
    
    imagePng($imf, '/tmp/image.png');
    


  • $w = 400 - 이미지 크기를 너비 400픽셀로 조정합니다.
  • $w * $size[1] / $size[0] - 소스 이미지 비율을 기준으로 크기 조정된 이미지 높이를 계산합니다.

  • Open original 또는 edit on Github .

    3. 투명 PNG 이미지 크기 조정




    <?php
    
    $file = '/var/www/examples/clouds.png';
    $size = getimagesize($file);
    $im = imagecreatefrompng($file);
    
    $w = 300;
    $h = $w * $size[1] / $size[0];
    
    $imf = imagecreatetruecolor($w, $h);
    imagealphablending($imf, false);
    imagesavealpha($imf, true);
    imagecopyresampled($imf, $im, 0,0,0,0, $w,$h,$size[0],$size[1]);
    
    imagePng($imf, '/tmp/image.png');
    


  • imagealphablending - 투명 배경이 검은색으로 변환되지 않도록 알파 블렌딩을 비활성화합니다.
  • imagesavealpha - 결과 이미지에 대해 알파 채널(투명도 제어)을 활성화하고 있습니다.

  • Open original 또는 edit on Github .

    좋은 웹페이지 즐겨찾기