这在localhost上运行得很好,但在我的服务器上不起作用,有人可以告诉我为什么吗?我的Centos 5盒子上有php-gd(php-gd-5.1.6-32.el5.x86_64)。
我完全不知道为什么它不会在服务器上工作,所以,如果有人有任何想法......
这是代码;
<?php
if (isset($_GET['img'])){
// make thumbnail
if(file_exists($_GET['img'])){
ignore_user_abort(true);
set_time_limit(120);
ini_set('memory_limit', '512M');
$src_size = getimagesize($_GET['img']);
if($src_size === false){
die('Thats not an image!');
}
$thumb_width = 250;
$thumb_height = 200;
if($src_size['mime'] === 'image/jpeg'){
$src = imagecreatefromjpeg($_GET['img']);
}else if($src_size['mime'] === 'image/png'){
$src = imagecreatefrompng($_GET['img']);
}else if($src_size['mime'] === 'image/gif'){
$src = imagecreatefromgif($_GET['img']);
}
$src_aspect = round(($src_size[0] / $src_size[1]), 1);
$thumb_aspect = round(($thumb_width / $thumb_height), 1);
if($src_aspect < $thumb_aspect){
//higher
$new_size = array($thumb_width,($thumb_width / $src_size[0]) * $src_size[1]);
$src_pos = array(0,(($new_size[1] - $thumb_height) * ($src_size[1] / $new_size[1])) / 2);
}else if ($src_aspect > $thumb_aspect){
//wider.
$new_size = array(($thumb_width / $src_size[1]) * $src_size[0],$thumb_height);
$src_pos = array(($new_size[0] - $thumb_width) / 2, 0);
}else{
// same shape
$new_size = array($thumb_width, $thumb_height);
$src_pos = array(0, 0);
}
if($new_size[0] < 1) $new_size[0] = 1;
if($new_size[1] < 1) $new_size[0] = 1;
$thumb = imagecreatetruecolor($thumb_width, $thumb_height);
imagecopyresampled($thumb, $src, 0, 0, $src_pos[0], $src_pos[1], $new_size[0], $new_size[1], $src_size[0], $src_size[1]);
if($src_size['mime'] === 'image/jpeg'){
imagejpeg($thumb, "thumbs/{$_GET['img']}");
}else if($src_size['mime'] === 'image/png'){
imagepng($thumb, "thumbs/{$_GET['img']}");
}else if($src_size['mime'] === 'image/gif'){
imagegif($thumb, "thumbs/{$_GET['img']}");
}
header("Location: thumbs/{$_GET['img']}");
}
die();
}
if (is_dir('./thumbs') === false){
mkdir('./thumbs', 0744);
}
$images = glob('*.{jpg,jpeg,png,gif}', GLOB_BRACE);
?>
<!DOCTYPE>
<html>
<head>
<title></title>
</head>
<body>
<div>
<?php
foreach($images as $image){
if(file_exists("./thumbs/{$image}")){
echo "<a href=\"{$image}\" target=\"_blank\"><img style='border: 4px solid black;' src=\"thumbs/{$image}\" alt=\"{$image}\" /></a>";
}else{
echo "<a href=\"{$image}\" target=\"_blank\"><img style='border: 4px solid black;' src=\"?img={$image}\" alt=\"{$image}\" /></a>";
}
}
?>
</div>
</body>
</html>
答案 0 :(得分:0)
您确定还在服务器上安装了gd库吗?
答案 1 :(得分:0)
根据我的知识,我觉得可能没有什么理由。
ini_set('memory_limit', -1);
并在返回结果之前在函数末尾重置它。 ini_restore('memory_limit');