2012-01-06 11 views
6

Mam obraz o rozmiarze 88x31 i chciałbym go zrobić 100x100 bez zmiany rozmiaru rzeczywistego obrazu, ale tylko jego płótno/ramkę, może poprzez skopiowanie go w środku nowy pusty biały obraz o rozmiarze 100x100. Jakieś pomysły, jak to zrobić?PHP GD - zmiana rozmiaru ramki obrazu/płótna, ale nie rzeczywisty obraz

+0

Nie powracaj do wymyślania koła na nowo, użyj istniejącego kodu: https://github.com/avalanche123/Imagine, ale jeśli nalegasz, istnieje mnóstwo podobnych pytań na SO, na które zostały już udzielone odpowiedzi. –

+1

możliwy duplikat [Utwórz obraz z GD zawierający inne obrazy] (http://stackoverflow.com/questions/2933170/create-a-picture-with-gd-containing-other-images) –

+0

Problem z Imagine to obszar nazw wsparcie, którego mój PHP nie ma w tej chwili i nie chcę jeszcze ulepszać, ale dzięki. – Marcin

Odpowiedz

7

Poprawna metoda jest stworzenie nowego wizerunku i skopiuj stary obraz na środku to (zakładając obraz wyjściowy jest JPEG i mniejsze niż 100x100):

$oldimage = imagecreatefromjpeg($filename); 
$oldw = imagesx($oldimage); 
$oldh = imagesy($oldimage); 

$newimage = imagecreatetruecolor(100, 100); // Creates a black image 

// Fill it with white (optional) 
$white = imagecolorallocate($newimage, 255, 255, 255); 
imagefill($newimage, 0, 0, $white); 

imagecopy($newimage, $oldimage, (100-$oldw)/2, (100-$oldh)/2, 0, 0, $old, $oldh);