2013-03-11 2 views
-5

Хорошо у меня есть этот код, который обрезает изображение и отобразить его, что я хотел сделать, это вместо того, чтобы только показать, что я хотел, чтобы сохранить изображение в папке здесь полный кодКак поместить изображение в каталог imagejpeg()?

<?php 
/* 
* Crop-to-fit PHP-GD 
* http://salman-w.blogspot.com/2009/04/crop-to-fit-image-using-aspphp.html 
* 
* Resize and center crop an arbitrary size image to fixed width and height 
* e.g. convert a large portrait/landscape image to a small square thumbnail 
*/ 

define('DESIRED_IMAGE_WIDTH', 512); 
define('DESIRED_IMAGE_HEIGHT', 289); 

$source_path = $_FILES['Image1']['tmp_name']; 

/* 
* Add file validation code here 
*/ 

list($source_width, $source_height, $source_type) = getimagesize($source_path); 

switch ($source_type) { 
    case IMAGETYPE_GIF: 
     $source_gdim = imagecreatefromgif($source_path); 
     break; 
    case IMAGETYPE_JPEG: 
     $source_gdim = imagecreatefromjpeg($source_path); 
     break; 
    case IMAGETYPE_PNG: 
     $source_gdim = imagecreatefrompng($source_path); 
     break; 
} 

$source_aspect_ratio = $source_width/$source_height; 
$desired_aspect_ratio = DESIRED_IMAGE_WIDTH/DESIRED_IMAGE_HEIGHT; 

if ($source_aspect_ratio > $desired_aspect_ratio) { 
    /* 
    * Triggered when source image is wider 
    */ 
    $temp_height = DESIRED_IMAGE_HEIGHT; 
    $temp_width = (int) (DESIRED_IMAGE_HEIGHT * $source_aspect_ratio); 
} else { 
    /* 
    * Triggered otherwise (i.e. source image is similar or taller) 
    */ 
    $temp_width = DESIRED_IMAGE_WIDTH; 
    $temp_height = (int) (DESIRED_IMAGE_WIDTH/$source_aspect_ratio); 
} 

/* 
* Resize the image into a temporary GD image 
*/ 

$temp_gdim = imagecreatetruecolor($temp_width, $temp_height); 
imagecopyresampled(
    $temp_gdim, 
    $source_gdim, 
    0, 0, 
    0, 0, 
    $temp_width, $temp_height, 
    $source_width, $source_height 
); 

/* 
* Copy cropped region from temporary image into the desired GD image 
*/ 

$x0 = ($temp_width - DESIRED_IMAGE_WIDTH)/2; 
$y0 = ($temp_height - DESIRED_IMAGE_HEIGHT)/2; 
$desired_gdim = imagecreatetruecolor(DESIRED_IMAGE_WIDTH, DESIRED_IMAGE_HEIGHT); 
imagecopy(
    $desired_gdim, 
    $temp_gdim, 
    0, 0, 
    $x0, $y0, 
    DESIRED_IMAGE_WIDTH, DESIRED_IMAGE_HEIGHT 
); 

/* 
* Render the image 
* Alternatively, you can save the image in file-system or database 
*/ 
header('Content-type: image/jpeg'); 
imagejpeg($desired_gdim); 
/* 
* Add clean-up code here 
*/ 
?> 

Моя проблема в последней строке, где imagejpeg($desired_gdim); должен быть imagejpeg($desired_gdim, 'img/whatever-filename.jpg');

Но образ даже не отображается в браузере и не отправляется в каталог, а также, если я хочу, чтобы вставить его с именем файла я уже загрузил его же вещь случается только маленькая иконка сломанного изображения

+1

header (content-type: image/jpeg), вы пытаетесь показать pic, для сохранения просто используйте 'imagejpeg ($ wish_gdim $ filename)' –

+0

Определите «не работает». Что происходит или не происходит? Вы получаете какие-либо ошибки? Вы проверили? – deceze

+0

удалить заголовок (тип содержимого), он используется для рендеринга не для сохранения. С уважением –

ответ

0

Вы должны выбрать между двумя - либо показать изображение, либо сохранить его в каталоге. Вы не можете сделать то и другое.

imagejpeg($gd_object); //shows the image, requires content-type to be image/jpeg 

imagejpeg($gd_object, $filepath); //saves the image, to $filepath 

Вы можете попытаться сохранить изображение, а затем перенаправить использование изображения, если хотите его показать.

imagejpeg($gd_object, $filepath); 
header("Location: $filepath"); 
+0

Спасибо большое человеку – user1950777

0

изменить ваш путь «IMG/что-filename.jpg» документировать корневую директорию вы можете получить с помощью $ _SERVER [ «DOCUMENT_ROOT»] и добавить свой путь желания. например, $ _SERVER ['DOCUMENT_ROOT']. '/ img/whatever-filename.jpg';

Смежные вопросы