2017-01-20 15 views
1

그래서 나는 imagecreate을 사용하여 3x3 픽셀 이미지를 가지고 있습니다. 나는 "픽셀"의 3x3 격자 모양을 유지하면서 이미지를 imagescale으로 확대하고 싶습니다. 그러나 오른쪽 가장자리와 아래 가장자리의 픽셀 크기가 다릅니다.imagescale을 사용하고 가장자리 "픽셀"모양을 유지하는 방법

<?php 

$image = imagecreate(3, 3); 
imagecolorallocate($image, 0, 0, 255); 
$red = imagecolorallocate($image, 255, 0, 0); 
imagesetpixel($image, 0, 0, $red); 
imagesetpixel($image, 1, 1, $red); 
imagesetpixel($image, 2, 2, $red); 

imagepng(imagescale($image, 200, 200, IMG_NEAREST_NEIGHBOUR)); 

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

이 내 출력은 다음과 같습니다 : 오른쪽 아래 픽셀이 차단 방법

enter image description here

공지 사항

여기에 내 코드와 출력 이미지입니다. 나는 새로운 차원의 숫자를 가지고 계속 놀았고 픽셀이 모두 같은 크기 인 256x256에 도착했습니다.

enter image description here

내 질문은 : 어떻게 내가 설명 된 효과 크기가 조정 된 이미지를 사용하는 치수 도출 할 수

이 256 × 256 사용 후 출력입니까?

보너스 질문 : 임의의 크기로 크기를 조정하고 픽셀을 거의 같은 크기로 유지할 수있는 대체 방법이 있습니까?

답변

1

저는 이것을 달성하기 위해 imagecopyresampled를 사용할 것입니다.

http://php.net/manual/en/function.imagecopyresampled.php

<?php 
    $width = 3; 
    $height = 3; 
    $image = imagecreate($width, $height); 
    imagecolorallocate($image, 0, 0, 255); 
    $red = imagecolorallocate($image, 255, 0, 0); 
    imagesetpixel($image, 0, 0, $red); 
    imagesetpixel($image, 1, 1, $red); 
    imagesetpixel($image, 2, 2, $red); 

    $new_width = 200; 
    $new_height = 200; 
    $dst = imagecreatetruecolor($new_width, $new_height); 
    imagecopyresampled($dst, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height); 
    imagepng($dst); 

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