2013-03-11 42 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),你想要显示图片,只需使用'imagejpeg($ desired_gdim $ filename)' – 2013-03-11 08:01:14

+0

定义“不工作”。发生了什么或没有发生什么?你有任何错误?你检查过了吗? – deceze 2013-03-11 08:01:18

+0

删除标题(内容类型),它用于渲染不保存。 Regards – 2013-03-11 08:02:04

回答

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 2013-03-16 23:25:18

0

改变你的路径“IMG /不管-filename.jpg”到文档根目录就可以开始使用$ _ SERVER [“DOCUMENT_ROOT”],并附加你的愿望路径。例如$ _SERVER ['DOCUMENT_ROOT']。'/ img/whatever-filename.jpg';