Изменение размера изображения с помощью PHP и GD2.Я получаю изображение и черный фон - PullRequest
0 голосов
/ 03 октября 2010

Я создаю динамический класс для создания различных изображений.

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);
    }
}
?>

И как я называю:

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

Ширина, этот код работает нормально ... но если я использую это:

$procesar_imagen->Resize(300, 300);

Мое окончательное сгенерированное изображение выглядит так: http://i51.tinypic.com/htwx79.jpg

Исходное изображение: http://i51.tinypic.com/15n9ifc.jpg

Я не знаю, как ее решить ... моя функция пропорци () возвращает новые высоту и ширину из соотношения сторон фотографии ... Я проверил, и значения верны, ширина возвращенаравно 300 (и окончательная ширина изображения составляет 300 ... но с учетом черной области).

1 Ответ

1 голос
/ 03 октября 2010

Я знаю, что вы пытаетесь написать свой собственный код, но вы можете взглянуть на это: http://www.white -hat-web-design.co.uk / article / php-image-resizing.php

...