2012-09-14 80 views
0

再一次,我在这里遇到了一个简单的问题,我无法解决,因为我使用的搜索术语显然与以前使用的搜索术语不匹配。我想创建的只是一小段脚本,可以使用URL更改图像宽度。通过URL更改图片大小

一个例子可以在http://waarneming.nl/fotonew/0/2639780.jpg上找到。如果添加变量?w=100&h=100,图像将调整大小。值得一提的是,我不需要裁剪(虽然100x100当然不是正确的比例,但在示例中也不会发生这种情况)。唯一发生的事情是可以用CSS和HTML做什么:更改更大图片的高度和宽度。但是因为我需要在另一个脚本中调整大小的图像,所以我想使用URL变量。

希望你能帮助!

+0

你想保存这些影像尺寸(即保存图像与它的新的大小)或只是在不同大小显示图像? – legrandviking

+0

只需显示它。它不应该创建一个新文件。 – Stijn

回答

6

使用SimpleImage库:

<?php 

/* 
* File: SimpleImage.php 
* Author: Simon Jarvis 
* Copyright: 2006 Simon Jarvis 
* Date: 08/11/06 
* Link: http://www.white-hat-web-design.co.uk/articles/php-image-resizing.php 
* 
* This program is free software; you can redistribute it and/or 
* modify it under the terms of the GNU General Public License 
* as published by the Free Software Foundation; either version 2 
* of the License, or (at your option) any later version. 
* 
* This program is distributed in the hope that it will be useful, 
* but WITHOUT ANY WARRANTY; without even the implied warranty of 
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 
* GNU General Public License for more details: 
* http://www.gnu.org/licenses/gpl.html 
* 
*/ 

class SimpleImage { 

    var $image; 
    var $image_type; 

    function load($filename) { 

     $image_info = getimagesize($filename); 
     $this->image_type = $image_info[2]; 
     if($this->image_type == IMAGETYPE_JPEG) { 

     $this->image = imagecreatefromjpeg($filename); 
     } elseif($this->image_type == IMAGETYPE_GIF) { 

     $this->image = imagecreatefromgif($filename); 
     } elseif($this->image_type == IMAGETYPE_PNG) { 

     $this->image = imagecreatefrompng($filename); 
     } 
    } 
    function save($filename, $image_type=IMAGETYPE_JPEG, $compression=75, $permissions=null) { 

     if($image_type == IMAGETYPE_JPEG) { 
     imagejpeg($this->image,$filename,$compression); 
     } elseif($image_type == IMAGETYPE_GIF) { 

     imagegif($this->image,$filename); 
     } elseif($image_type == IMAGETYPE_PNG) { 

     imagepng($this->image,$filename); 
     } 
     if($permissions != null) { 

     chmod($filename,$permissions); 
     } 
    } 
    function output($image_type=IMAGETYPE_JPEG) { 

     if($image_type == IMAGETYPE_JPEG) { 
     imagejpeg($this->image); 
     } elseif($image_type == IMAGETYPE_GIF) { 

     imagegif($this->image); 
     } elseif($image_type == IMAGETYPE_PNG) { 

     imagepng($this->image); 
     } 
    } 
    function getWidth() { 

     return imagesx($this->image); 
    } 
    function getHeight() { 

     return imagesy($this->image); 
    } 
    function resizeToHeight($height) { 

     $ratio = $height/$this->getHeight(); 
     $width = $this->getWidth() * $ratio; 
     $this->resize($width,$height); 
    } 

    function resizeToWidth($width) { 
     $ratio = $width/$this->getWidth(); 
     $height = $this->getheight() * $ratio; 
     $this->resize($width,$height); 
    } 

    function scale($scale) { 
     $width = $this->getWidth() * $scale/100; 
     $height = $this->getheight() * $scale/100; 
     $this->resize($width,$height); 
    } 

    function resize($width,$height) { 
     $new_image = imagecreatetruecolor($width, $height); 
     imagecopyresampled($new_image, $this->image, 0, 0, 0, 0, $width, $height, $this->getWidth(), $this->getHeight()); 
     $this->image = $new_image; 
    }  

} 
?> 

那么,试试这个:

<?php 
    include('SimpleImage.php'); 
    $image = new SimpleImage(); 
    $image->load($_GET['file']); 
    $image->resize($_GET['width'], $_GET['height']); 
    $image->output(); 
?> 

为了调用脚本,你会传递文件名,通过你的URL的宽度和高度。假设脚本名为foo.php:

http://www.example.com/foo.php?file=picture_name.jpg&width=100&height=100

+0

如果你想做服务端,为什么不使用GD? – boruch

+0

这只是GD上的一个抽象,用于简化使用 –

0

您可以在JavaScript中获取参数并将其分配给图像。 喜欢的东西:

function gup(name) 
{ 
    name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]"); 
    var regexS = "[\\?&]"+name+"=([^&#]*)"; 
    var regex = new RegExp(regexS); 
    var results = regex.exec(window.location.href); 
    if(results == null) 
    return ""; 
    else 
    return results[1]; 
} 

然后:

var imagelengh = gup('w') 
$('#image').width(w)