+4

Classe para Manipulação de Imagens

criado por Túlio Spuri em 27/03/2010 6:50pm
Exemplos:

- Diminuir imagem em 50% do seu tamanho
- Redimensionar imagem para 200x300 mantendo a proporção
- Redimensionar imagem para 100x100 SEM manter a proporção
- Redimensionar imagem e gerar uma miniatura
- Cortar imagens

Os exemplos acima estão no site:
http://www.tulios.net/classes-php/imagem
Data Autor Changelog Download
27/03/2010 6:50pm Túlio Spuri Versão 1.0 Versão 1.0
16/04/2010 9:42am Túlio Spuri Versão 1.2 Versão 1.2

Comentários:

Mostrando 1 - 3 de 3 comentários
MContreira disse:
Olá pessoal,
criei uma função chamada 'imgCreate()' para redimensionar uma imagem.
Eu estou tentando utilizar essa função para recriar duas imagens nos tamanhos que preciso a partir de uma imagem base recebida por upload.
A questão é a seguinte, as duas imagens são criadas a partir da imagem base que guardo em uma pasta 'uploads', a imagem original é guardada corretamente já as outras duas o arquivo é criado, só que vem com zero bites e a imagem não aparece, ou seja, não é craiada corretamente. Outra coisa que aconteceu também
é que as imagens começaram a ser exibidas em binário. Já tentei inserir o header("Content-type: image/jpeg") mas mesmo assim não funciona.
Já tentei de várias formas corrigir mas ainda não obtive sucesso, se alguém puder me direcionar melhor para a correção desses erros serei imensamente grato.

Segue abaixo os códigos que estou utilizando.



Função 'imgCreate()' no arquivo 'funcoes.php':

<?php
function imgCreate($imgjpg, $width_target)
{
$img = imagecreatefromjpeg($imgjpg);

$width_origin = imagesx($img);
$heigth_origin = imagesy($img);

$heigth_new = (int)($heigth_origin * $width_target)/$width_origin;

$new = imagecreatetruecolor($width_target,$heigth_new);

$criado = imagecopyresampled($new, $img, 0, 0, 0, 0, $width_target, $heigth_new, $width_origin, $heigth_origin);

if($criado){
header("Content-type: image/jpeg");
echo imagejpeg($new, $arquivo, 100);
}
else
return "Not possible create image!";
}
?>


Código onde estou tentando utilizar a função:

<?php
require 'funcoes.php';

$photo = $_FILES["photo"];

if(isset($photo))
{
$widthThumb = 117;
$widthImage = 350;

$newNamePhoto = uniqid(time());

$newPhoto = "../uploads/".$newNamePhoto;

$newNameThumb = $newNameFoto."_thumb.jpg";
$newNameImage = $newNameFoto."_img.jpg";

move_uploaded_file($photo['tmp_name'], $newPhoto);

$thumb = imgCreate($newFoto, $newPhoto, $widthThumb);
$file = fopen("../uploads/".$newNameThumb,"wb");
fwrite($file, $thumb, sizeof($thumb));
fclose($file);

$image = imgCreate($newFoto, $newPhoto, $widthImage);
$file = fopen("../uploads/".$newNameImage,"wb");
fwrite($file, $image, sizeof($image));
fclose($file);
}
?>
25/08/2010 3:11pm (~13 anos atrás)

Túlio Spuri disse:
Oi Rubens,

Realmente os links foram muito úteis. Pouparam um bom número de linhas de código. Lancei uma nova versão com modificações possibilitadas pelas suas dicas.

Valeu!
28/03/2010 1:35pm (~14 anos atrás)

Olá, Túlio, dê uma olhadinha nos links abaixo (acho que devem ajudar sua vida):

http://br2.php.net/manual/pt_BR/function.pathinfo.php
http://br2.php.net/manual/pt_BR/function.realpath.php

Além disso, quando precisar quebrar um caminho, melhor usar a constante DIRECTORY_SEPARATOR, já que no Windows usa "\" ao invés de "/".
http://www.php.net/manual/en/dir.constants.php
27/03/2010 11:57pm (~14 anos atrás)

Novo Comentário:

(Você pode usar tags como <b>, <i> ou <code>. URLs serão convertidas para links automaticamente.)