8
I would like to resize images by the ratio from a remote link using PHP. This is possible?
Type:
for
http://exemplo.com/resize.php?img=http://site.net/imagem.jpg&width=100
Note: In case, the 2 addresses would belong to me. No images theft.
8
I would like to resize images by the ratio from a remote link using PHP. This is possible?
Type:
for
http://exemplo.com/resize.php?img=http://site.net/imagem.jpg&width=100
Note: In case, the 2 addresses would belong to me. No images theft.
11
A very common thing in standard PHP installations is the library GD integrated into the distribution. If this is the case, just use the function imagecopyresampled()
to generate a new image size.
bool imagecopyresampled ( resource $img_destino, resource $img_origem,
int $x_destino , int $y_destino,
int $x_origem, int $y_origem,
int $largura_destino, int $altura_destino,
int $largura_origem, int $altura_origem )
Example of use, coming from the linked php page, but adapted to the question:
<?php
// O arquivo. Dependendo da configuração do PHP pode ser uma URL.
$filename = 'original.jpg';
//$filename = 'http://exemplo.com/original.jpg';
// Largura e altura máximos (máximo, pois como é proporcional, o resultado varia)
// No caso da pergunta, basta usar $_GET['width'] e $_GET['height'], ou só
// $_GET['width'] e adaptar a fórmula de proporção abaixo.
$width = 200;
$height = 200;
// Obtendo o tamanho original
list($width_orig, $height_orig) = getimagesize($filename);
// Calculando a proporção
$ratio_orig = $width_orig/$height_orig;
if ($width/$height > $ratio_orig) {
$width = $height*$ratio_orig;
} else {
$height = $width/$ratio_orig;
}
// O resize propriamente dito. Na verdade, estamos gerando uma nova imagem.
$image_p = imagecreatetruecolor($width, $height);
$image = imagecreatefromjpeg($filename);
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig);
// Gerando a imagem de saída para ver no browser, qualidade 75%:
header('Content-Type: image/jpeg');
imagejpeg($image_p, null, 75);
// Ou, se preferir, Salvando a imagem em arquivo:
imagejpeg($image_p, 'nova.jpg', 75);
?>
Note that in the example we are opening the image of a file, but the function also serves to open a URL, just changing the given path. See the directive documentation allow_url_fopen PHP, which controls this behavior.
The above code makes the image fit the specified measure, leaving "leftover" on the smaller side. If you prefer to occupy the total area, just change with the following section:
// inverte a comparação e calcula o offset
if ($width/$height < $ratio_orig) {
$dif_w = $height*$ratio_orig/2-$height;
$dif_h = 0;
} else {
$dif_w = 0;
$dif_h = $width/$ratio_orig/2-$width;
}
$image_p = imagecreatetruecolor($width, $height);
$image = imagecreatefromjpeg($filename);
// e ajusta a origem
imagecopyresampled($image_p, $image, -$dif_w, -$dif_h, 0, 0, $width, $height, $width_orig, $height_orig);
Excellent explanation! One more star for you!
5
You can use the Wideimage to resize the image.
For example:
$path = $_GET['img'];
// faça as verificações de validade da imagem...
$image = WideImage::load($path);
// scala:
$width = $_GET['width']; // verifique se é válido.
if($width > 0)
{
$scale = $image->getWidth()/$width;
}
else
{
//tratar caso de largura inválida.
}
// Calcula a altura equivalente a largura passada.
$height = $image->getHeight() * $scale;
$resizedImage = $image->resize($width, $height);
// Daqui para frente você faz o que deve fazer com sua imagem.
// Por exemplo:
$resizedImage->saveToFile('imagem_redimencionada.jpg');
// Ou:
header("Content-type: image/jpeg");
$resizedImage->output('jpg', 100); // Onde 100 é a qualidade em %
Browser other questions tagged php image
You are not signed in. Login or sign up in order to post.
Try to place the images yourself, otherwise for future research no one will know what you mean.
– Jorge B.