buenas a todos. una consulta. estuve investigando en google y en foros del web como redimensionar imagenes. vi unos ejemplos en foros del web y uno que hice por mismo, de como se redimensiona las imagenes.
supongamos que tengo una imagen de 1280 x 1240 px y quiero redimensionarlo a 500 x 500 px. subo el archivo y el codigo que hice me lo redimensiona. pero me di con la sorpresa que cuando lo he asignado los tamaños correspondientes, los redimensiona a tamaños distintos.
esta es una clase para la redimension de las imagenes. lo saque de la pagina de phpclasses.org
Código PHP:
Ver original<?php
##############################################
# Shiege Iseng Resize Class
# 11 March 2003
# shiegege_at_yahoo.com
# View Demo :
# http://shiege.com/scripts/thumbnail/
/*############################################
Sample :
$thumb=new thumbnail("./shiegege.jpg"); // generate image_file, set filename to resize
$thumb->size_width(100); // set width for thumbnail, or
$thumb->size_height(300); // set height for thumbnail, or
$thumb->size_auto(200); // set the biggest width or height for thumbnail
$thumb->jpeg_quality(75); // [OPTIONAL] set quality for jpeg only (0 - 100) (worst - best), default = 75
$thumb->show(); // show your thumbnail
$thumb->save("./huhu.jpg"); // save your thumbnail to file
----------------------------------------------
Note :
- GD must Enabled
- Autodetect file extension (.jpg/jpeg, .png, .gif, .wbmp)
but some server can't generate .gif / .wbmp file types
- If your GD not support 'ImageCreateTrueColor' function,
change one line from 'ImageCreateTrueColor' to 'ImageCreate'
(the position in 'show' and 'save' function)
*/############################################
class thumbnail
{
var $img;
function thumbnail($imgfile)
{
//detect image format
$this->img["format"]=ereg_replace(".*\.(.*)$","\\1",$imgfile); $this->img["format"]=strtoupper($this->img["format"]); if ($this->img["format"]=="JPG" || $this->img["format"]=="JPEG") {
//JPEG
$this->img["format"]="JPEG";
} elseif ($this->img["format"]=="PNG") {
//PNG
$this->img["format"]="PNG";
} elseif ($this->img["format"]=="GIF") {
//GIF
$this->img["format"]="GIF";
} elseif ($this->img["format"]=="WBMP") {
//WBMP
$this->img["format"]="WBMP";
} else {
//DEFAULT
echo "Not Supported File";
}
@$this->img["lebar"] = imagesx($this->img["src"]); @$this->img["tinggi"] = imagesy($this->img["src"]); //default quality jpeg
$this->img["quality"]=75;
}
function size_height($size=100)
{
//height
$this->img["tinggi_thumb"]=$size;
@$this->img["lebar_thumb"] = ($this->img["tinggi_thumb"]/$this->img["tinggi"])*$this->img["lebar"];
}
function size_width($size=100)
{
//width
$this->img["lebar_thumb"]=$size;
@$this->img["tinggi_thumb"] = ($this->img["lebar_thumb"]/$this->img["lebar"])*$this->img["tinggi"];
}
function size_auto($size=100)
{
//size
if ($this->img["lebar"]>=$this->img["tinggi"]) {
$this->img["lebar_thumb"]=$size;
@$this->img["tinggi_thumb"] = ($this->img["lebar_thumb"]/$this->img["lebar"])*$this->img["tinggi"];
} else {
$this->img["tinggi_thumb"]=$size;
@$this->img["lebar_thumb"] = ($this->img["tinggi_thumb"]/$this->img["tinggi"])*$this->img["lebar"];
}
}
function jpeg_quality($quality=75)
{
//jpeg quality
$this->img["quality"]=$quality;
}
function show()
{
//show thumb
@Header("Content-Type: image/".$this->img["format"]);
/* change ImageCreateTrueColor to ImageCreate if your GD not supported ImageCreateTrueColor function*/
@imagecopyresized ($this->img["des"], $this->img["src"], 0, 0, 0, 0, $this->img["lebar_thumb"], $this->img["tinggi_thumb"], $this->img["lebar"], $this->img["tinggi"]);
if ($this->img["format"]=="JPG" || $this->img["format"]=="JPEG") {
//JPEG
imageJPEG($this->img["des"],"",$this->img["quality"]); } elseif ($this->img["format"]=="PNG") {
//PNG
} elseif ($this->img["format"]=="GIF") {
//GIF
} elseif ($this->img["format"]=="WBMP") {
//WBMP
}
}
function save($save="")
{
//save thumb
/* change ImageCreateTrueColor to ImageCreate if your GD not supported ImageCreateTrueColor function*/
@imagecopyresized ($this->img["des"], $this->img["src"], 0, 0, 0, 0, $this->img["lebar_thumb"], $this->img["tinggi_thumb"], $this->img["lebar"], $this->img["tinggi"]);
if ($this->img["format"]=="JPG" || $this->img["format"]=="JPEG") {
//JPEG
imageJPEG($this->img["des"],"$save",$this->img["quality"]); } elseif ($this->img["format"]=="PNG") {
//PNG
} elseif ($this->img["format"]=="GIF") {
//GIF
} elseif ($this->img["format"]=="WBMP") {
//WBMP
}
}
}
?>
el codigo que redimensiona la imagen.
Código PHP:
Ver original<?php
include("includes/resize.php");
$imagen = $_FILES['imagen']['name'];
$uploadtempname = $_FILES['imagen']['tmp_name'];
#video de la noticia.
$tamano = $_FILES['imagen']['size']; // Leemos el tamaño del fichero
$tamano_max = "4194304"; // Tamaño maximo permitido
if($tamano <= $tamano_max){ // Comprovamos el tamaño*/
$path = "imagenes/";
$path_thumbnail = "thumbs/";
$thumb=new thumbnail($path.$nuevo_imagen); // prepare to generate "shiegege.jpg" in directory "/www/imagenes"
$thumb->size_width(500); // set width for thumbnail with 500 pixels
$thumb->size_height(400); // set the biggest width or height for thumbnail
$thumb->jpeg_quality(75); // [OPTIONAL] set quality for jpeg only (0 - 100) (worst - best), default = 75
$thumb->save($path_thumbnail."thb_".$nuevo_imagen); // save my thumbnail to file "huhu.jpg" in directory "/www/thumbs
echo "El archivo ".$nuevo_archivo." se ha subido corectamente.";
}else{
echo "<span align = 'center'>El archivo que intenta grabar, excede el peso requerido. El máximo de peso es 4MB.</span>";
echo "<br /><br />";
echo "<a href='javascript:history.back()'>Clic aqui para regresar </a>";
}
}else{
echo "<span align = 'center'>El archivo que intenta grabar, debe ser de formato jpg, jpeg, gif y png</span>";
echo "<br /><br />";
echo "<a href='javascript:history.back()'>Clic aqui para regresar </a>";
}
?>
mi duda es la siguiente:
1. en la clase que instancia que coloco los tamaños correspondientes.
Código PHP:
Ver original$thumb->size_width(500); // set width for thumbnail with 500 pixels
$thumb->size_height(400); // set the biggest width or height for thumbnail
no tendria que redimensionar y mostrar los tamaños (500 x 400 px) que le he asignado ?
2. vi en los temas del foro que preguntan sobre redimensionar imagenes proporcionalmente. eso se refiere a que si uno coloca los tamaños ya definidos ?.
aclarenme esa duda por favor.