2012-02-26 36 views
10
$image_p = imagecreatetruecolor($new_width, $new_height); 
$image = imagecreatefromjpeg($filename); 
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height); 

¿Cómo puedo guardar la imagen redimensionada en la carpeta /? ¿Y cómo puedo detectar el tipo de imagen es jpg/png/gif?PHP Guardar imagen Después de imagecopyresampled

Respuesta

12

Para guardar la imagen en un archivo, puede utilizar cualquiera de estos: imagejpeg(), imagepng() o imagegif(), dependiendo del formato de salida que desee.

Para detectar el tipo de imagen, puede verificar la extensión del archivo y basarse en eso. Sin embargo, a veces las personas cambian manualmente la extensión de un archivo de imagen, pensando que realmente cambia el tipo de imagen, por lo que siempre es una buena idea comprobar si imagecreatefrom devolvió un recurso de imagen en lugar de falso.

Para una forma rápida para volver sólo la extensión de un archivo:

$ext = pathinfo($path_to_file, PATHINFO_EXTENSION); 

Manual entry on pathinfo()

4

añadir este código

imagepng($iOut,'pic/mypic.png',3); 

& este código para obtener el formato de las fotografías de una fuente externa

$link='http://example.com/example.png'; 
echo (substr ($link,strrpos ($link,".")+1)); 
1
$filename = 'path/to/original/file.xxx'; // where xxx is file type (jpg, gif, or png) 
$newfilename = 'path/to/resized/file.xxx'; // where xxx is file type (jpg, gif, or png) 
$path_parts = pathinfo($filename); 
if ($path_parts['extension'] == 'jpg') { 
    $image_p = imagecreatetruecolor($new_width, $new_height); 
    $image = imagecreatefromjpeg($filename); 
    imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height); 
    imagejpeg($image_p, $newfilename); 
} elseif ($path_parts['extension'] == 'gif') { 
    $image_p = imagecreatetruecolor($new_width, $new_height); 
    $image = imagecreatefromgif($filename); 
    imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height); 
    imagegif($image_p, $newfilename); 
} elseif ($path_parts['extension'] == 'png') { 
    $image_p = imagecreatetruecolor($new_width, $new_height); 
    $image = imagecreatefrompng($filename); 
    imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height); 
    imagepng($image_p, $newfilename); 
} else { 
     echo "Source file is not a supported image file type."; 
} 
+0

Su trabajo fino tema con sólo la creación de archivo PNG como el archivo regenerada deben ser transparentes. Cómo se puede hacer –

3

Después se aplicó imagecopyresampled(), la $dst_image será su identificador de recurso de imagen.

La simple aplicación de la función imagecopyresampled() tampoco la guarda automágicamente en el sistema de archivos.

Por lo que tendrá que guardarlo, usando una de las funciones imagejpeg(), imagepng()

// Output 
imagejpeg($dst_image, 'new-image.jpg', 100); 
Cuestiones relacionadas