Saltar al contenido

Recortar imagen en PHP

Solución:

Si está intentando generar miniaturas, primero debe cambiar el tamaño de la imagen usando imagecopyresampled();. Debe cambiar el tamaño de la imagen para que el tamaño del lado más pequeño de la imagen sea igual al del lado correspondiente del pulgar.

Por ejemplo, si su imagen de origen es de 1280x800px y su pulgar es de 200x150px, debe cambiar el tamaño de su imagen a 240x150px y luego recortarla a 200x150px. Esto es para que la relación de aspecto de la imagen no cambie.

Aquí hay una fórmula general para crear miniaturas:

$image = imagecreatefromjpeg($_GET['src']);
$filename="images/cropped_whatever.jpg";

$thumb_width = 200;
$thumb_height = 150;

$width = imagesx($image);
$height = imagesy($image);

$original_aspect = $width / $height;
$thumb_aspect = $thumb_width / $thumb_height;

if ( $original_aspect >= $thumb_aspect )
{
   // If image is wider than thumbnail (in aspect ratio sense)
   $new_height = $thumb_height;
   $new_width = $width / ($height / $thumb_height);
}
else
{
   // If the thumbnail is wider than the image
   $new_width = $thumb_width;
   $new_height = $height / ($width / $thumb_width);
}

$thumb = imagecreatetruecolor( $thumb_width, $thumb_height );

// Resize and crop
imagecopyresampled($thumb,
                   $image,
                   0 - ($new_width - $thumb_width) / 2, // Center the image horizontally
                   0 - ($new_height - $thumb_height) / 2, // Center the image vertically
                   0, 0,
                   $new_width, $new_height,
                   $width, $height);
imagejpeg($thumb, $filename, 80);

No he probado esto pero deberían trabaja.

EDITAR

Ahora probado y funcionando.

imagecopyresampled() tomará un área rectangular de $src_image de ancho $src_w y altura $src_h en la posición ($src_x, $src_y) y colóquelo en un área rectangular de $dst_image de ancho $dst_w y altura $dst_h en la posición ($dst_x, $dst_y).

Si las coordenadas de origen y destino y el ancho y las alturas difieren, se realizará el estiramiento o encogimiento apropiado del fragmento de imagen. Las coordenadas se refieren a la esquina superior izquierda.

Esta función se puede utilizar para copiar regiones dentro de la misma imagen. Pero si las regiones se superponen, los resultados serán impredecibles.

– Editar –

Si $src_w y $src_h son más pequeños que $dst_w y $dst_h respectivamente, la imagen del pulgar se acercará. De lo contrario, se alejará.

<?php
$dst_x = 0;   // X-coordinate of destination point
$dst_y = 0;   // Y-coordinate of destination point
$src_x = 100; // Crop Start X position in original image
$src_y = 100; // Crop Srart Y position in original image
$dst_w = 160; // Thumb width
$dst_h = 120; // Thumb height
$src_w = 260; // Crop end X position in original image
$src_h = 220; // Crop end Y position in original image

// Creating an image with true colors having thumb dimensions (to merge with the original image)
$dst_image = imagecreatetruecolor($dst_w, $dst_h);
// Get original image
$src_image = imagecreatefromjpeg('images/source.jpg');
// Cropping
imagecopyresampled($dst_image, $src_image, $dst_x, $dst_y, $src_x, $src_y, $dst_w, $dst_h, $src_w, $src_h);
// Saving
imagejpeg($dst_image, 'images/crop.jpg');
?>

php 5.5 tiene una función de recorte de imágenes http://php.net/manual/en/function.imagecrop.php

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : / / /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *