2010-01-29 63 views
6

Tôi đang làm việc trên một tập lệnh tải lên một hình ảnh bằng cách sử dụng PHP và tôi muốn làm cho nó thay đổi kích thước hình ảnh thành chiều rộng 180 trước khi lưu nó.
Tôi đã thử sử dụng thư viện WideImage và -> saveFileTO (...) nhưng khi tôi bao gồm tệp WideImage.php trong trang, trang sẽ bị bỏ trống !!
Vì vậy, đây là kịch bản của tôi nếu bạn có thể giúp tôi và cho tôi biết làm thế nào để làm cho nó lưu các phiên bản thay đổi kích cỡ
Tải lên và đổi kích thước hình ảnh PHP

Trả lời

6

Bạn có thể sử dụng PHP GD library để thay đổi kích thước một hình ảnh trên tải lên.

Đoạn mã dưới đây sẽ cho bạn một ý tưởng về làm thế nào để thực hiện thay đổi kích thước:

// 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

Bạn có thể sử dụng một lớp Tôi đã viết cho chỉ là một nhiệm vụ như vậy:

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

Bạn thậm chí không cần sử dụng thư viện WideImage.

Kiểm tra kịch bản này ở đây: http://bgallz.org/502/php-upload-resize-image/

Bạn bắt đầu bằng cách tải lên hình ảnh và lưu vào một tập tin ảnh temp. Tập lệnh này chạy một biểu mẫu với các yếu tố đầu vào cho chiều cao tối đa hoặc chiều rộng tối đa. Vì vậy, sau đó nó sẽ tạo ra một tệp hình ảnh mới dựa trên chiều rộng/chiều cao mới và sau đó sao chép hình ảnh tạm thời vào hình ảnh mới được tạo trên máy chủ.

Bạn thấy điều này với đoạn mã sau:

// 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); 
Các vấn đề liên quan