Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

[APORTE] Subir y redimensionar imagenes

Estas en el tema de [APORTE] Subir y redimensionar imagenes en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Cita: Iniciado por iviamontes para unirla usa la clase que te digo. Después les hecho un ojo. Ahora descanso y miro. De todas formas prefiero ...

  #31 (permalink)  
Antiguo 06/07/2011, 09:51
 
Fecha de Ingreso: agosto-2010
Ubicación: Tenerife
Mensajes: 893
Antigüedad: 13 años, 8 meses
Puntos: 202
Respuesta: [APORTE] Subir y redimensionar imagenes

Cita:
Iniciado por iviamontes Ver Mensaje
para unirla usa la clase que te digo.
Después les hecho un ojo. Ahora descanso y miro.
De todas formas prefiero hacerlo directamente sin usar nada más.
Gracias.
__________________
Pensaba que internet era una gran biblioteca de sabiduría, hasta que comprendí que un libro no puede tener mil páginas llenas de faltas de ortografía... :(
  #32 (permalink)  
Antiguo 07/07/2011, 12:18
Avatar de iviamontes  
Fecha de Ingreso: enero-2011
Ubicación: $cubano->Arg->Mendoza
Mensajes: 1.184
Antigüedad: 13 años, 3 meses
Puntos: 209
Respuesta: [APORTE] Subir y redimensionar imagenes

no es sobre lo de los gifs, aun no me he tenido tiempo..., pero he visto que a muchos tienen la duda de cómo hacer la marca de agua.., por lo que le agregué ese método a esta clase, espero les sirva

Código PHP:

  
public function watermark($img_marcadeagua$calidad 100){
            
// obtener datos de la "marca de agua" 
            
$info_marcadeagua getimagesize($img_marcadeagua); 
            
            
$anchura_marcadeagua $info_marcadeagua[0]; 
            
$altura_marcadeagua $info_marcadeagua[1]; 
    
            
// calcular la posición donde debe copiarse la "marca de agua" en la fotografia 
            
$horizmargen = ($this->getWidth() - $anchura_marcadeagua ) - 10// /2 lo pone en el medio
            
$vertmargen  = ($this->getHeight() - $altura_marcadeagua ) - 10
        
            
imagealphablending$this->_imagetrue); 
            
// crear nueva imagen desde la marca de agua 
            
$marcadeagua imagecreatefrompng($img_marcadeagua); 
            
// copiar la "marca de agua" en la fotografia 
            
imagecopy$this->_image$marcadeagua$horizmargen$vertmargen00$anchura_marcadeagua$altura_marcadeagua); 
            
// cerrar las imágenes 
            
imagedestroy($marcadeagua); 
            return 
$this->_image;
        } 
__________________
aconcaguaestudio.com
  #33 (permalink)  
Antiguo 07/07/2011, 13:11
 
Fecha de Ingreso: agosto-2010
Ubicación: Tenerife
Mensajes: 893
Antigüedad: 13 años, 8 meses
Puntos: 202
Respuesta: [APORTE] Subir y redimensionar imagenes

Yo sigo y prosigo intentándolo con los gif animados
Pero aunque vuelvo a armar el gif cambiando el tamaño este me sale sin animar y con el fondo negro.

Por cierto en la función resize tienen que añadir las mismas dos funciones que para el png,
imagealphablending($newImage, false); y imagesavealpha($newImage, true);
si no, no salvará la transparencia en los gif:

Código PHP:
            elseif($this->getImageType() == 'image/gif' && $this->_transparent === true){
                if((
$index imagecolortransparent($this->_image)) != -1){
                    
imagealphablending($newImagefalse);
                    
imagesavealpha($newImagetrue);
                    
$colors imagecolorsforindex($this->_image$index);
                    
$transparent imagecolorallocatealpha($newImage$colors['red'], $colors['green'], $colors['blue'], $colors['alpha']);
                    
imagefill($newImage00$transparent);
                    
imagecolortransparent($newImage$transparent);
                }
            } 
__________________
Pensaba que internet era una gran biblioteca de sabiduría, hasta que comprendí que un libro no puede tener mil páginas llenas de faltas de ortografía... :(
  #34 (permalink)  
Antiguo 07/07/2011, 13:22
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: [APORTE] Subir y redimensionar imagenes

@iviamontes, trato y te dejo saber,

@IEKK, a mí me funcionó con un gif la forma como lo tengo. ¿Trataste la que mostré si te sale con transparencia? Si puedes indicame la imagen a ver si me sale también el error.

Edito: @IEKK coloqué lo que indicaste y me salio con fondo negro, en vez de transparencia, sin embargo trato la forma como mostré y me sale la transparencia.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos

Última edición por abimaelrc; 07/07/2011 a las 13:30
  #35 (permalink)  
Antiguo 07/07/2011, 13:27
Avatar de iviamontes  
Fecha de Ingreso: enero-2011
Ubicación: $cubano->Arg->Mendoza
Mensajes: 1.184
Antigüedad: 13 años, 3 meses
Puntos: 209
Respuesta: [APORTE] Subir y redimensionar imagenes

IEKK a mi me funciona bien tal y como está, me pasas la imagen que dices para probar ??.. y no dejes que te venza lo de los gifs jaja, cuando tengas más tiempo te hecho una manito
__________________
aconcaguaestudio.com
  #36 (permalink)  
Antiguo 07/07/2011, 13:42
 
Fecha de Ingreso: agosto-2010
Ubicación: Tenerife
Mensajes: 893
Antigüedad: 13 años, 8 meses
Puntos: 202
Respuesta: [APORTE] Subir y redimensionar imagenes

Finalmente debo desistir en armar el .gif animado.
La transparencia era solucionable pero acabo de comprobar que aunque cambie la cabecera php al guardar la imagen cambia el formato del GIF.

Por lo que he podido observar los gif animados contienen GIF89(y algo más)
Miestras php lo cambia al guardar así GIF87 y cambia por completo lo que había en la cabecera. Al menos a mi no se me ocurre que más hacer.
__________________
Pensaba que internet era una gran biblioteca de sabiduría, hasta que comprendí que un libro no puede tener mil páginas llenas de faltas de ortografía... :(
  #37 (permalink)  
Antiguo 07/07/2011, 13:49
 
Fecha de Ingreso: agosto-2010
Ubicación: Tenerife
Mensajes: 893
Antigüedad: 13 años, 8 meses
Puntos: 202
Respuesta: [APORTE] Subir y redimensionar imagenes

Cita:
Iniciado por abimaelrc Ver Mensaje
@iviamontes, trato y te dejo saber,

@IEKK, a mí me funcionó con un gif la forma como lo tengo. ¿Trataste la que mostré si te sale con transparencia? Si puedes indicame la imagen a ver si me sale también el error.

Edito: @IEKK coloqué lo que indicaste y me salio con fondo negro, en vez de transparencia, sin embargo trato la forma como mostré y me sale la transparencia.
Cita:
Iniciado por iviamontes Ver Mensaje
IEKK a mi me funciona bien tal y como está, me pasas la imagen que dices para probar ??.. y no dejes que te venza lo de los gifs jaja, cuando tengas más tiempo te hecho una manito
http://www.pixeljoint.com/files/icons/vaderflow.gif

Está sale con fondo negro, sin embargo ya vi que aún añadiendo esas líneas se produce el mismo efecto, así que en esa parte estaba equivocado.
__________________
Pensaba que internet era una gran biblioteca de sabiduría, hasta que comprendí que un libro no puede tener mil páginas llenas de faltas de ortografía... :(
  #38 (permalink)  
Antiguo 07/07/2011, 13:59
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: [APORTE] Subir y redimensionar imagenes

Muerstra lo que hayas hecho para que podamos continuar de ahí
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #39 (permalink)  
Antiguo 07/07/2011, 14:09
 
Fecha de Ingreso: agosto-2010
Ubicación: Tenerife
Mensajes: 893
Antigüedad: 13 años, 8 meses
Puntos: 202
Respuesta: [APORTE] Subir y redimensionar imagenes

Cita:
Iniciado por abimaelrc Ver Mensaje
Muerstra lo que hayas hecho para que podamos continuar de ahí
¿Lo de los gif animados o el gif que me muestra mal?

Lo primero lo posteo por si alguien ve la luz dentro de un rato que tengo que estar a otras cosas.

Lo del gif con fondo en negro pasa con algunos y con la clase tal cual está posteada.
__________________
Pensaba que internet era una gran biblioteca de sabiduría, hasta que comprendí que un libro no puede tener mil páginas llenas de faltas de ortografía... :(
  #40 (permalink)  
Antiguo 07/07/2011, 14:15
Avatar de iviamontes  
Fecha de Ingreso: enero-2011
Ubicación: $cubano->Arg->Mendoza
Mensajes: 1.184
Antigüedad: 13 años, 3 meses
Puntos: 209
Respuesta: [APORTE] Subir y redimensionar imagenes

ok, abimaelrc, pudiste probar lo de la marca de agua ???
__________________
aconcaguaestudio.com
  #41 (permalink)  
Antiguo 07/07/2011, 14:48
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: [APORTE] Subir y redimensionar imagenes

Todavía porque estoy en el trabajo, pero inmediatamente lo haga lo posteo en el aporte
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #42 (permalink)  
Antiguo 07/07/2011, 15:27
 
Fecha de Ingreso: agosto-2010
Ubicación: Tenerife
Mensajes: 893
Antigüedad: 13 años, 8 meses
Puntos: 202
Respuesta: [APORTE] Subir y redimensionar imagenes

Modifiqué algunas partes de la clase para intentar conseguir hacer el rezise al gif animado...
No entiendo muy bien si al separar y volver a unir el gif estoy quitando o añadiendo algo de más que impide la animación o si se debe al guardar la imagen con php. ¿Alguna idea?

-Compruebo si es un gif animado
-Divido los frames
-Los guardo temporalmente
-Los uno en un gif
-Borro los temporales

No hace mucho que empezé a usar php orientado a objetos así que mi código puede dar pena

Código PHP:
    <?php
    
/**
     * File: ResizePicture.php
     * Author: Simon Jarvis
     * Copyright: Simon Jarvis
     * Date: Aug-11-06
     * Original link: http://www.white-hat-web-design.co.uk/articles/php-image-resizing.php
     *
     * Modified Date: Jul-05-11
     * Gif transparency by iviamontes - http://www.forosdelweb.com/miembros/iviamontes/
     */
     
    
class ResizePicture {
        private 
$_image;
        private 
$_image_gif;
        private 
$_head_image_gif;
        private 
$_path;
        private 
$_imageType;
        private 
$_transparent;
     
        public function 
__construct($fileName=null$transparent=false)
        {
            
$this->setTransparent($transparent);
     
            if(!
is_null($fileName)){
                
$this->load($fileName);
            }
        }
     
        public function 
setTransparent($bool)
        {
            
$this->_transparent = (boolean)$bool;
        }
     
        public function 
load($fileName)
        {
            
$imageInfo getimagesize($fileName);
            
$this->_imageType $imageInfo[2];
     
             
$this->_path=$fileName;
            
            if(
$this->_imageType == IMAGETYPE_JPEG){
                
$this->_image imagecreatefromjpeg($fileName);
            }
            elseif(
$this->_imageType == IMAGETYPE_GIF){
                
$this->_image imagecreatefromgif($fileName);
            }
            elseif(
$this->_imageType == IMAGETYPE_PNG){
                
$this->_image imagecreatefrompng($fileName);
            }
        }
     
        public function 
save($fileName$compression=75$permissions=null)
        {
            if(
$this->_imageType == IMAGETYPE_JPEG){
                
imagejpeg($this->_image$fileName$compression);
            }
            elseif(
$this->_imageType == IMAGETYPE_GIF){
                
imagegif($this->_image$fileName);        
            }
            elseif(
$this->_imageType == IMAGETYPE_PNG){
                
imagepng($this->_image$fileName);
            }
     
            if(!
is_null($permissions)) {
                
chmod($fileName$permissions);
            }
        }
     
        public function 
output()
        {
            if(
$this->_imageType == IMAGETYPE_JPEG){
                
imagejpeg($this->_image);
            }
            elseif(
$this->_imageType == IMAGETYPE_GIF){
                
imagegif($this->_image);        
            }
            elseif(
$this->_imageType == IMAGETYPE_PNG){
                
imagepng($this->_image);
            }  
        }
     
        public function 
getWidth()
        {
            return 
imagesx($this->_image);
        }
     
        public function 
getHeight()
        {
            return 
imagesy($this->_image);
        }
     
        public function 
getImageType()
        {
            switch(
$this->_imageType){
                case 
IMAGETYPE_JPEG:
                    
$imageType 'image/jpeg';
                    break;
                case 
IMAGETYPE_GIF:
                    
$imageType 'image/gif';
                    break;
                case 
IMAGETYPE_PNG:
                    
$imageType 'image/png';
                    break;
                default:
                    
$imageType null;
            }
            return 
$imageType;
        }
     
        public function 
resizeToHeight($height)
        {
            
$ratio $height $this->getHeight();
            
$width $this->getWidth() * $ratio;
            
$this->resize($width,$height);
        }
     
        public function 
resizeToWidth($width)
        {
            
$ratio $width $this->getWidth();
            
$height $this->getHeight() * $ratio;
            
$this->resize($width$height);
        }
     
        public function 
scale($scale)
        {
            
$width $this->getWidth() * $scale 100;
            
$height $this->getHeight() * $scale 100;
            
$this->resize($width$height);
        }
 
        public function 
resize($width$height)
        {
            
$newImage imagecreatetruecolor($width$height);
            if(
$this->getImageType() == 'image/png' && $this->_transparent === true){
                
imagealphablending($newImagefalse);
                
imagesavealpha($newImagetrue);
                
imagefilledrectangle($newImage00$width$heightimagecolorallocatealpha($newImage255255255127));
            }
            elseif(
$this->getImageType() == 'image/gif' && $this->_transparent === true){
                if((
$index imagecolortransparent($this->_image)) != -1){
                    
$colors imagecolorsforindex($this->_image$index);
                    
$transparent imagecolorallocatealpha($newImage$colors['red'], $colors['green'], $colors['blue'], $colors['alpha']);
                    
imagefill($newImage00$transparent);
                    
imagecolortransparent($newImage$transparent);
                }
            }
            
            if(
$this->is_animated()){       //si es animado
                
$this->get_frames_gif() ;   // extraer cada frame
                
                
if(count($this->_image_gif)>1){  // comprobamos que estén bien sacados los frames
                    
foreach ($this->_image_gif as $key => $value){  
                        
imagecopyresampled($newImage$value0000$width$height$this->getWidth(), $this->getHeight()); //redimensionamos cada frame
                        
$this->_image_gif[$key]=$newImage//guardamos en la misma posición el frame cambiado
                    
}
                    
                    
$this->join_frames_gif();  //volvemos a unir los frames
                    
                
}
            }
            else{
                
imagecopyresampled($newImage$this->_image0000$width$height$this->getWidth(), $this->getHeight());
            }
            
            
$this->_image $newImage;
        }     

         public function 
is_animated()
        {
               return (bool)
preg_match('#\x00\x21\xF9\x04.{4}\x00\x2C#s'file_get_contents($this->_path));
        }
                
        public function 
get_frames_gif() 
        {
            if(
$this->_imageType == IMAGETYPE_GIF){
                
                if(!(
$fh file_get_contents($this->_path))){
                     break;
                }
            
                
$reg_exp='#\x00\x21\xF9\x04.{4}\x00\x2C#s';
                
                if(
preg_match($reg_exp$fh$matches)){ 
                    
$head=$matches[0];
                }
                
                
$bodypreg_split($reg_exp$fh);
                
                if(
count($body>1) and isset($head)){
                    
                    
$this->_head_image_gif $body[0];
                                    
                    foreach (
$body as $key => $value){
                        if(
$key!=0){
                            
$this->_image_gif[]= imagecreatefromstring($body[0].$head.$value);    
                            
//guardar frames (Esto lo hace bien)                            
                            //if(imagegif ($this->_image, 'probando'.$key.'.gif')) echo '- Se ha creado el frame '.$key.'<br>';                            
                        
}
                    }
                }
            }          
        }
        
        public function 
join_frames_gif() 
        {
            
//Creamos los frames temporalmente
            
foreach ($this->_image_gif as $key => $value){ 
                
imagegif ($value'temp'.$key.'.gif');
            }
            
            
//Leemos el contenido de cada uno.
            
foreach ($this->_image_gif as $key => $value){ 
                
$name='temp'.$key.'.gif';
                if(
$fh file_get_contents($name)){
                    if(
$key==0){  
                        
$frames=$fh;       
                    }
                    else{ 
//quitamos los encabezados de todos los frames menos del primero
                        
$frames.=str_replace($this->_head_image_gif,'',$fh);
                    }
                    
unlink($name);    
                }
                else{
                    break;
                }
            }    
            
            
//echo $frames;
            
unset($this->_image_gif);
            
$this->_image imagecreatefromstring($frames);    

        }        
        
    }
    
    
?>
__________________
Pensaba que internet era una gran biblioteca de sabiduría, hasta que comprendí que un libro no puede tener mil páginas llenas de faltas de ortografía... :(
  #43 (permalink)  
Antiguo 08/07/2011, 07:10
Avatar de iviamontes  
Fecha de Ingreso: enero-2011
Ubicación: $cubano->Arg->Mendoza
Mensajes: 1.184
Antigüedad: 13 años, 3 meses
Puntos: 209
Respuesta: [APORTE] Subir y redimensionar imagenes

abimaelrc, tengo un problema, la clase me funciona bien, es decir tengo un png que hago operaciones sobre el y lo salvo con save(), y todo bien no pierde la transparencia...., pero si o si necesito guardarlo en la bd (cosas ajenas a mi voluntad), para eso agregué un método auxiliar que se se llama outputToVar

Código PHP:
  public function outputToVar($image_type=IMAGETYPE_JPEG ){
            
$img "";
            
ob_start();
            
            if( 
$image_type == IMAGETYPE_JPEG 
            {
                 
imagejpeg($this->_image$img);
            } 
            elseif( 
$image_type == IMAGETYPE_GIF 
            {
                 
imagegif($this->_image$img);         
            }
             elseif( 
$image_type == IMAGETYPE_PNG 
             {
                 
imagepng($this->_image$img);
            }   
            
        
$img ob_get_contents();
        
ob_end_clean();
        
$img str_replace('##','##',mysql_escape_string($img));
        return 
$img;
   } 
hago esto

$foto = $image->outputToVar();

y guardo la foto en la BD, la guarda bien, pero el problema está en que pierde la transparencia !!!, alguna idea ?

aca tienes el cómo lo hago

$image = new ResizePicture($_FILES['pic']['tmp_name'], true);
$image->resizeToWidth(220);
$type = $image->getImageType();
$foto = $image->outputToVar();
$sql = "insert into empresa (nombre, logo, type) values ('$nombre', '$foto', '$type')";
__________________
aconcaguaestudio.com
  #44 (permalink)  
Antiguo 08/07/2011, 07:18
Avatar de iviamontes  
Fecha de Ingreso: enero-2011
Ubicación: $cubano->Arg->Mendoza
Mensajes: 1.184
Antigüedad: 13 años, 3 meses
Puntos: 209
Respuesta: [APORTE] Subir y redimensionar imagenes

asunto resulto..

Código PHP:
public function outputToVar($image_type=IMAGETYPE_JPEG ){
        
$img "";
            
ob_start();
               
$this->output($image_type); 
               
$img ob_get_contents();
             
ob_end_clean();
        
$img str_replace('##','##',mysql_escape_string($img));
        return 
$img;
   } 
no se si le sirva a alguien
__________________
aconcaguaestudio.com
  #45 (permalink)  
Antiguo 08/07/2011, 07:44
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: [APORTE] Subir y redimensionar imagenes

En cuanto a la base de datos, no creo que sea necesario añadirla a la clase porque tu podrías extender y crear otra clase que haga lo que quieras, ya que lo único que necesita es output y escapar los caracteres requeribles. La que sí quiero añadir, pero no he tenido tiempo todavía de verificarla es la de watermaker. Ya mismo la añado a la clase principal. Y la más que deseo añadir es la de animaciones de GIF, pero por falta de tiempo no la he verificado, cuando lo tenga lo añado
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #46 (permalink)  
Antiguo 08/07/2011, 07:51
Avatar de iviamontes  
Fecha de Ingreso: enero-2011
Ubicación: $cubano->Arg->Mendoza
Mensajes: 1.184
Antigüedad: 13 años, 3 meses
Puntos: 209
Respuesta: [APORTE] Subir y redimensionar imagenes

quiero ver si este fin de semana me pongo con lo de los gif animados, eso es una cosa que en verdad quiero hacer... jajaja
__________________
aconcaguaestudio.com
  #47 (permalink)  
Antiguo 11/07/2011, 07:57
Avatar de iviamontes  
Fecha de Ingreso: enero-2011
Ubicación: $cubano->Arg->Mendoza
Mensajes: 1.184
Antigüedad: 13 años, 3 meses
Puntos: 209
Respuesta: [APORTE] Subir y redimensionar imagenes

hola abimaelrc, mira esto
http://estudiopronet.com/gif_animado/gifanimado.zip
cuando lo copies me dices para borrarlo por fis.
te va a salvar el gif animado reducido como destino.gif, despues puedes cargarlo con
<img src="destino.gif" /> para que lo veas reducido y con la animación...

que me dices de la marca de agua ?
__________________
aconcaguaestudio.com
  #48 (permalink)  
Antiguo 11/07/2011, 09:02
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: [APORTE] Subir y redimensionar imagenes

Ok, ya lo baje, dame un tiempo, no te preocupes, que lo tuyo va aparecer en el post, así que no te preocupes, ahora esa clase es de PHP 4, tengo que verla bien para modificarla a PHP 5 y creo que me va a tomar mucho tiempo en arreglarla, pero si hace el trabajo, solo es cuestión de modificarla Le hecharé un vistazo y te dejo saber
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #49 (permalink)  
Antiguo 11/07/2011, 09:04
Avatar de iviamontes  
Fecha de Ingreso: enero-2011
Ubicación: $cubano->Arg->Mendoza
Mensajes: 1.184
Antigüedad: 13 años, 3 meses
Puntos: 209
Respuesta: [APORTE] Subir y redimensionar imagenes

ok gracias
__________________
aconcaguaestudio.com
  #50 (permalink)  
Antiguo 11/07/2011, 09:16
 
Fecha de Ingreso: agosto-2010
Ubicación: Tenerife
Mensajes: 893
Antigüedad: 13 años, 8 meses
Puntos: 202
Respuesta: [APORTE] Subir y redimensionar imagenes

Cita:
Iniciado por iviamontes Ver Mensaje
iviamontes ¿Te funciona ese ejemplo? Lo estuve mirando por encima pero igual me daba error.
Además toda la función para saber si es un gif ainmado o no puede hacerse con una sóla línea.

Código PHP:
         public function is_animated()
        {
               return (bool)
preg_match('#\x00\x21\xF9\x04.{4}\x00\x2C#s'file_get_contents($this->_path));
        } 
__________________
Pensaba que internet era una gran biblioteca de sabiduría, hasta que comprendí que un libro no puede tener mil páginas llenas de faltas de ortografía... :(
  #51 (permalink)  
Antiguo 11/07/2011, 09:20
Avatar de iviamontes  
Fecha de Ingreso: enero-2011
Ubicación: $cubano->Arg->Mendoza
Mensajes: 1.184
Antigüedad: 13 años, 3 meses
Puntos: 209
Respuesta: [APORTE] Subir y redimensionar imagenes

si, si me funciona bien, es decir me salva la imagen reducida y cuando abro la reducida, está con la animación, no me dio error.
ya vamos a ir puliendo esa función para dejarla lo mejor posible
__________________
aconcaguaestudio.com
  #52 (permalink)  
Antiguo 12/07/2011, 09:43
Avatar de iviamontes  
Fecha de Ingreso: enero-2011
Ubicación: $cubano->Arg->Mendoza
Mensajes: 1.184
Antigüedad: 13 años, 3 meses
Puntos: 209
Respuesta: [APORTE] Subir y redimensionar imagenes



este gif, si le pongo a que me lo cargue con transparencia
$image = new ResizePicture('06 Onsite Oil Analysis Labs.gif', true);
me da un aviso
Warning: imagecolorsforindex() [function.imagecolorsforindex]: Color index 255 out of range

todos pensarán y claro le quitas la transparencia y listo
$image = new ResizePicture('06 Onsite Oil Analysis Labs.gif');
y si es cierto ya no da ese problema

pero ..., tenía duda de pq entraba entonces aquí

if(($index = imagecolortransparent($this->_image)) != -1)

y resulta que $index tenía el valor de 255...

solución

Código PHP:
  if(($index imagecolortransparent($this->_image)) != -&& ($index imagecolortransparent($this->_image)) != 255){ 
ahora si puedo ponerle true, pq estoy haciendo una carga masiva de imagenes, y no se cuando tiene o no transparencia antes de inicializar la clase

= new ResizePicture($_FILE['img']['tmp_name'], true); por lo que quería ponerle a todos true y que el script discriminara internamente, que para eso era el $index = imagecolortransparent($this->_image)) != -1
__________________
aconcaguaestudio.com
  #53 (permalink)  
Antiguo 14/07/2011, 06:08
 
Fecha de Ingreso: agosto-2010
Ubicación: Tenerife
Mensajes: 893
Antigüedad: 13 años, 8 meses
Puntos: 202
Respuesta: [APORTE] Subir y redimensionar imagenes

Lo que no entiendo de tu if es que que si una imagen contiene el pixel con un rgb de 255 no entraría.
Es cierto que te lo devuelve como que el fondo es blanco siendo este transparente, pero ¿Y si la imagen tiene alguna zona con ese color? ¿No daría problemas?

Saludos.
__________________
Pensaba que internet era una gran biblioteca de sabiduría, hasta que comprendí que un libro no puede tener mil páginas llenas de faltas de ortografía... :(
  #54 (permalink)  
Antiguo 14/07/2011, 06:17
Avatar de iviamontes  
Fecha de Ingreso: enero-2011
Ubicación: $cubano->Arg->Mendoza
Mensajes: 1.184
Antigüedad: 13 años, 3 meses
Puntos: 209
Respuesta: [APORTE] Subir y redimensionar imagenes

bueno yo tengo entendido que en un GIF, la transparencia viene definida por un color, un solo color, que se define como transparente, de manera que cada pixel que tenga exactamente ese color será transparente, la transparencia es una característica de la imagen, no del color en sí por lo que una vez definido, cualquier pixel que tenga ese color será transparente.
por lo que todo lo que tenga ese color definido como transparente lo tratará como tal.
no se si esté en lo cierto
__________________
aconcaguaestudio.com
  #55 (permalink)  
Antiguo 14/07/2011, 14:48
Avatar de JuJoGuAl  
Fecha de Ingreso: julio-2009
Ubicación: Venezuela
Mensajes: 754
Antigüedad: 14 años, 8 meses
Puntos: 19
Respuesta: [APORTE] Subir y redimensionar imagenes

Obtengo error cuando coloco el reziseimage.php en mi web

Parse error: syntax error, unexpected T_CLASS in C:\AppServ\www\ResizePicture.php on line 13

que podria estar haciendo mal, y ps disculpen la ignorancia pero yo no quiero subir la imagen yo la tengo en el servidor quiero es llamarla y reajustarla, sin modificar el original... como hago??
  #56 (permalink)  
Antiguo 14/07/2011, 14:53
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: [APORTE] Subir y redimensionar imagenes

¿Cómo lo añadiste?
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #57 (permalink)  
Antiguo 14/07/2011, 14:55
Avatar de iviamontes  
Fecha de Ingreso: enero-2011
Ubicación: $cubano->Arg->Mendoza
Mensajes: 1.184
Antigüedad: 13 años, 3 meses
Puntos: 209
Respuesta: [APORTE] Subir y redimensionar imagenes

parece que es que cuando se copia desde la web se copian caracteres extraños, (me ha pasado) que no se ven, pero el compilador si
tiene que darle backspace hasta la linea de arriba y despues darle enter, y así con todas las demás.
__________________
aconcaguaestudio.com
  #58 (permalink)  
Antiguo 16/07/2011, 09:55
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: [APORTE] Subir y redimensionar imagenes

He colocado en el wiki la clase así todos podemos trabajar en ella, pero antes de hacerlo posteen aquí lo que hayan hecho para que podamos discutirlo y ver si útil o si se debe mejorar antes de editarlo. En el primer post coloqué la dirección.

Estoy viendo ahora mismo lo del watermarker y cuando lo verifiqué completamente les indico

@ivamontes, agregué lo que indicaste del 255 Tienes razón salía ese error.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #59 (permalink)  
Antiguo 16/07/2011, 10:53
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: [APORTE] Subir y redimensionar imagenes

Ya añadí lo de la marca de agua, pero hice un cambio, a usar imagecopymerge. La razón es que posiblemente la persona quiera que la marca de agua sea semi-transparente que es lo indicado para evitar que la quiten. Usé una función que alguien había publicado en el manual oficial para que funcionara con el alpha.

Muy bueno iviamontes, se me hizo fácil trabajar con ella
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #60 (permalink)  
Antiguo 16/07/2011, 11:27
Avatar de iviamontes  
Fecha de Ingreso: enero-2011
Ubicación: $cubano->Arg->Mendoza
Mensajes: 1.184
Antigüedad: 13 años, 3 meses
Puntos: 209
Respuesta: [APORTE] Subir y redimensionar imagenes

gracias abimaelrc
buenísimo el cambio que hiciste, es que estoy empezando en el trabajo de las imágenes, por eso me encantan compartir lo que hago para mejorar los códigos, viva el código abierto jaja
__________________
aconcaguaestudio.com

Etiquetas: imagenes, redimensionar
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 15 personas




La zona horaria es GMT -6. Ahora son las 11:13.