2009-11-12 140 views
0

好吧我真的新到PHP,我发现下面的下面的脚本。但我不知道如何使用它我想知道我在哪里把链接的图像例如images/photo.jpg为了让我开始学习这个脚本感谢。PHP图像调整大小脚本?

这是代码。

<?php 
function resizeImage($originalImage,$toWidth,$toHeight){ 

    // Get the original geometry and calculate scales 
    list($width, $height) = getimagesize($originalImage); 
    $xscale=$width/$toWidth; 
    $yscale=$height/$toHeight; 

    // Recalculate new size with default ratio 
    if ($yscale>$xscale){ 
     $new_width = round($width * (1/$yscale)); 
     $new_height = round($height * (1/$yscale)); 
    } 
    else { 
     $new_width = round($width * (1/$xscale)); 
     $new_height = round($height * (1/$xscale)); 
    } 

    // Resize the original image 
    $imageResized = imagecreatetruecolor($new_width, $new_height); 
    $imageTmp  = imagecreatefromjpeg ($originalImage); 
    imagecopyresampled($imageResized, $imageTmp, 0, 0, 0, 0, $new_width, $new_height, $width, $height); 

    return $imageResized; 
} 
?> 

回答

0

您可以将链接传递给原始JPEG作为函数中的第一个参数,它将被设置为$ originalImage。

所以调用函数时,你会使用:

resizeImage("images/photo.jpg",800,600); 

这两个数字将是你的宽/高值。

0

而是回输管路必须添加

header('Content-type: image/jpeg'); 
imagejpeg($imageResized); 

或检查http://www.php.net/manual/en/function.imagejpeg.php例2保存为JPEG图像

+0

我想做更多,然后只保存一个JPG图像。 – PeAk 2009-11-12 01:54:57

+0

是的,我明白了,但代码丢失保存或显示操作的图片! – powtac 2009-11-12 03:40:26

+0

imagejpeg($ imageResized); 改变的图像返回到浏览器! – powtac 2009-11-12 03:41:08

1

有几个潜在的陷阱在这里,所以我给你一些潜在的问题,你可以运行到:

  1. 您需要提供图像的完整路径以便读取它。我用下面的脚本是:
 
function getRoot(){ 
    $cwd = getcwd(); 
    $splitCwd = explode("/", $cwd); 
    $root = ""; 
    for($count=0; $count<count($splitCwd)-1;$count++){ 
     $root .= '/' . $splitCwd[$count]; 
    } 
    $root = $root . '/'; 
    return $root; 
} 

然后,你可以通过在(getRoot()$图像,...)

  • 创建开关将检查文件类型(请参阅我的回答here)。这将允许您调整不仅仅是JPEG文件多,输出的不仅仅是JPEG文件多,这是很好的透明度时均可受累。

  • 可能会有最后一个或两个参数,即输出文件名。这样,您可以在保留原始图像的同时制作缩略图。在这种情况下,你会做的imagejpeg(或imagepng等),并通过其新名称参数如果设置。