2011-03-11 9 views
1

4 개의 작은 JPEG 이미지 (40px x 30px)가 있으며 GD를 사용하여 타일 이미지를 생성하고 싶습니다.타일 이미지 (GD)

상단 2 개 및 하단 2 개.

[][] 
[][] 

방법이 완료 될 수있다 : 이것처럼

? 당신이 사용해야합니다

+0

[imagecopy '()'(http://www.php.net/imagecopy) 또는 [imagecopyresampled '()'(http://php.net/imagecopyresampled)이 수행된다. –

+1

가능한 복제본 [PHP와 두 개의 이미지 병합] (http://stackoverflow.com/questions/3876299/merging-two-images-with-php) – Trufa

+0

@Trufa와 유사하지만 병합하지 않고 이미지를 타일로 분할합니다. . – Jacob

답변

5

기능은

  • getimagesize 있습니다 - 당신은 당신이 그것을 하드 코드하지 않으려면, 최종 이미지를 만들기 위해 어떤 크기를 알 수 있도록 폭과 높이를 가져옵니다.
  • imagecreate - 병합 된 이미지의 리소스를 만듭니다.
  • imagecreatefromjpeg - 기존 타일을 리소스로로드하십시오.
  • imagecopy - 기존 타일을 새 이미지 리소스에 복사하면 크기/치수가 변경되지 않으므로 리샘플링 된 함수가 필요하지 않습니다.
  • imagejpeg - 병합 된 이미지를 저장합니다.

다음은 타일 배열을 반복하는 테스트되지 않은 코드입니다. 너비와 높이에 상수를 사용합니다. 그냥 이미지를 표시하려면

<?php 
define('TILE_WIDTH', 40); 
define('TILE_HEIGHT', 30); 

$tiles = array(
    array('tile1.jpeg', 'tile2.jpeg'), 
    array('tile3.jpeg', 'tile4.jpeg'), 
); 

$saveTo = 'result.jpeg'; 

$image = imagecreate(TILE_WIDTH * 2, TILE_HEIGHT * 2); 
foreach($tiles as $row => $columns) { 
    foreach($columns as $col => $filename) { 
     $tile = imagecreatefromjpeg($filename); 
     imagecopy($image, $tile, $row * TILE_WIDTH, $col * TILE_HEIGHT, 0, 0, TILE_WIDTH, TILE_HEIGHT); 
    } 
} 

imagejpeg($image, $saveTo); 

, 당신은 imagejpeg 두 번째 인수를 전달하지 않습니다,하지만 당신은 이미지/JPEG로 헤더 내용 유형을 설정해야합니다.

+0

"기존 이미지의 일부를 타일로 복사". 그렇다면 기존 이미지에 다른 이미지를 추가하는 방법은 무엇입니까? – user622378

+0

imagecreatefromjpeg로 만든 타일 이미지 리소스를 imagecreate로 만든 더 큰 이미지 리소스로 복사하려면 imagecopy를 사용해야합니다. – Jacob