2010-01-29 21 views
6

Pracuję nad skryptem, który przesyła obraz za pomocą PHP i chcę go zmienić rozmiar obrazu na szerokość 180 przed zapisaniem.
Próbowałem używać biblioteki WideImage i -> saveFileTO (...), ale kiedy dołączę WideImage.php na stronie, strona zniknie!
Więc tutaj jest mój skrypt, czy możesz mi pomóc i powiedzieć mi, jak zrobić to zapisać zmienionym rozmiarze wersję
Przesyłanie i zmiana rozmiaru obrazu w języku angielskim

Odpowiedz

6

Można użyć PHP GD library aby zmienić rozmiar obrazu na przesłaniu.

Poniższy kod powinien dać wyobrażenie o tym, jak wdrożyć Resize:

// Get the image info from the photo 
$image_info = getimagesize($photo); 
$width = $new_width = $image_info[0]; 
$height = $new_height = $image_info[1]; 
$type = $image_info[2]; 

// Load the image 
switch ($type) 
{ 
    case IMAGETYPE_JPEG: 
     $image = imagecreatefromjpeg($photo); 
     break; 
    case IMAGETYPE_GIF: 
     $image = imagecreatefromgif($photo); 
     break; 
    case IMAGETYPE_PNG: 
     $image = imagecreatefrompng($photo); 
     break; 
    default: 
     die('Error loading '.$photo.' - File type '.$type.' not supported'); 
} 

// Create a new, resized image 
$new_width = 180; 
$new_height = $height/($width/$new_width); 
$new_image = imagecreatetruecolor($new_width, $new_height); 
imagecopyresampled($new_image, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height); 

// Save the new image over the top of the original photo 
switch ($type) 
{ 
    case IMAGETYPE_JPEG: 
     imagejpeg($new_image, $photo, 100); 
     break; 
    case IMAGETYPE_GIF: 
     imagegif($new_image, $photo);   
     break; 
    case IMAGETYPE_PNG: 
     imagepng($new_image, $photo); 
     break; 
    default: 
     die('Error saving image: '.$photo); 
} 
1

Można użyć klasy Pisałem do takiego właśnie zadania:

http://code.google.com/p/image2/source/browse/#svn/trunk/includes/classes

<?php 

    try 
    { 
     $image = new Image2($path_to_image); 
    } 
    catch (NotAnImageException $e) 
    { 
     printf("FILE PROVIDED IS NOT AN IMAGE, FILE PATH: %s", $path_to_image); 
    } 

    $image -> resize(array("width" => 180)) -> saveToFile($new_path); // be sure to exclude the extension 
    $new_file_location = $image -> getFileLocation(); // this will include the extension for future use 
1

Nie musisz nawet korzystać z biblioteki WideImage.

Sprawdź ten skrypt tutaj: http://bgallz.org/502/php-upload-resize-image/

zacząć, przesyłając obraz i zapisywanie do pliku temp obrazu. Ten skrypt uruchamia formularz z danymi wejściowymi dla maksymalnej wysokości lub maksymalnej szerokości. Tak więc wygeneruje nowy plik obrazu na podstawie nowej szerokości/wysokości, a następnie skopiuje obraz tymczasowy na nowy utworzony na serwerze.

Widać to z następującego kodu:

// Create temporary image file. 
$tmp = imagecreatetruecolor($newwidth,$newheight); 
// Copy the image to one with the new width and height. 
imagecopyresampled($tmp,$image,0,0,0,0,$newwidth,$newheight,$width,$height); 
Powiązane problemy