PHP ve GD2 ile bir resim boyutlandırma.

0 Cevap php

Ben çeşitli görüntüler oluşturmak için dinamik bir sınıf oluşturma.

ImagesUtils.php

<?php
class ImagesUtils
{
    private $nombre_imagen = null;
    private $imagen = null;
    private $extension = null;
    private $directorio = null;

    private $width = null;
    private $height = null;
    private $tipo = null;

    private $final_width = null;
    private $final_height = null;
    private $nuevo_nombre = null;
    private $nuevo_directorio = null;

    public function __construct($imagen, $directorio = '')
    {
        $this->directorio = realpath("..".DS."data".DS."storage".DS."files".DS.$directorio);

        $this->imagen = $this->directorio.DS.$imagen;
        $this->nombre_imagen = $imagen;

        $this->extension = substr($imagen, strrpos($imagen, '.') + 1, strlen($imagen));

        $propiedades = getimagesize($this->imagen);

        $this->width = $propiedades["0"];
        $this->height = $propiedades["1"];
        $this->tipo = $propiedades["2"];
    }

    public function Resize($width = null, $height = null, $proporcion = true)
    {
        $this->final_width = $width;
        $this->final_height = $height;

        if(true == $proporcion)
            self::proporcion($width, $height);

        $imagen = imagecreatefromjpeg($this->imagen);

        $nueva_imagen = imagecreatetruecolor($this->final_width, $this->final_height);

        imagecopyresampled($nueva_imagen, $imagen, 0, 0, 0, 0, $this->final_width, $this->final_height, $this->width, $this->height);

        return imagejpeg($image, $this->nueva_imagen);
    }
}
?>

Ve nasıl çağırır:

$procesar_imagen = new ImagesUtils($imagen["nombre"]);
$procesar_imagen->Resize(640, 480);

Genişliği bu kod çalışıyor ... ama bu kullanırsanız:

$procesar_imagen->Resize(300, 300);

http://i51.tinypic.com/htwx79.jpg: Benim son görüntü gibi görünüyor oluşturulan

Giriş görüntü: http://i51.tinypic.com/15n9ifc.jpg

Benim proporcion () işlevi fotoğrafın boy oranı yeni yükseklik ve genişlik ... ben kontrol döner ve değerleri doğru ... bunu çözmek için nasıl bilmiyorum, iade genişliği 300 (ve nihai görüntü genişliği 300 ... ama siyah alan sayma).

0 Cevap