CodeIgniter Image Manipulation Ошибка JPG

Я написал систему для своего личного веб-сайта с помощью CodeIgniter и использовал библиотеку GD2 для управления изображениями в соответствии со своими потребностями. Он отлично работал на локальном хосте и бесплатном хостинге, который я использовал для тестирования. Но теперь, когда я нахожусь на платном хостинге от другого провайдера, он не работает для файлов jpg. Он показывает значок сломанного изображения. Но отлично работает с файлами PNG. Я пытался отобразить ошибки манипуляции, но ничего не отображалось.

Вот мой медиа-контроллер, который управляет изображениями;

<?php defined('BASEPATH') OR exit('No direct script access allowed');

class Media extends CI_Controller
{

function sandbox($imageName , $width)
  {

      if(!is_file('uploads/sandbox/'.$width.'-'.$imageName)) {
         $config['image_library'] = 'gd2';
         $config['source_image'] = 'uploads/original/'.$imageName;
         $config['new_image'] = 'uploads/sandbox/'.$width.'-'.$imageName;
         $config['dynamic_output'] = FALSE;
         $config['maintain_ratio'] = TRUE;
         $config['master_dim'] = 'width';
         $config['width'] = $width;
         $config['height'] = $width;

         $this->image_lib->initialize($config);
         return $this->image_lib->resize();
    }    else {
        return true;
    }

  }

  public function covers($imageName)
  {

     if($this->sandbox($imageName, 920)) {

         $config['image_library'] = 'gd2';
         $config['source_image'] = 'uploads/sandbox/'.'920-'.$imageName;
         $config['dynamic_output'] = TRUE;
         $config['maintain_ratio'] = FALSE;
         $config['width'] = 920;
         $config['height'] = 450;

         $this->image_lib->initialize($config);
         $this->image_lib->crop();

     }


  }

  public function images($imageName)
  {

     if($this->sandbox($imageName, 440)) {

         $config['image_library'] = 'gd2';
         $config['source_image'] = 'uploads/sandbox/'.'440-'.$imageName;
         $config['dynamic_output'] = TRUE;
         $config['maintain_ratio'] = FALSE;
         $config['width'] = 440;
         $config['height'] = 300;

         $this->image_lib->initialize($config);
         if(!$this->image_lib->crop()){
            echo $this->image_lib->display_errors();
         }

     }

  }

  public function facebook($imageName)
  {

     $config['image_library'] = 'gd2';
     $config['source_image'] = 'uploads/original/'.$imageName;
     $config['dynamic_output'] = TRUE;
     $config['maintain_ratio'] = FALSE;
     $config['width'] = 256;
     $config['height'] = 256;

     $this->image_lib->initialize($config);
     echo $this->image_lib->resize();

  }

}

person SuperioREX    schedule 25.02.2014    source источник
comment
Вы не забыли установить GD на сервер? Меня однажды это зацепило.   -  person Matthew Daly    schedule 25.02.2014
comment
Он отлично работает при изменении размера и сохранении в другой файл (функция песочницы выше). Будь то jpg или png.   -  person SuperioREX    schedule 25.02.2014
comment
библиотека image_lib загружается автоматически? если нет, то вы должны загрузить библиотеку, прежде чем вызывать их. Я думаю, отчеты об ошибках отключены. Попробуйте включить функцию отчетов об ошибках   -  person Nouphal.M    schedule 25.02.2014
comment
Запустите phpinfo() на обоих серверах и сравните раздел «GD». Проверьте различия между платным и локальным/бесплатным хостингом.   -  person Robert Trzebiński    schedule 25.02.2014
comment
Спасибо, ребята, я проверил, загружена ли ваша библиотека. И phpinfos были такими же. В конце концов, я изменил свой контроллер, чтобы сохранять изображения вместо того, чтобы обслуживать их на лету, и это сработало.   -  person SuperioREX    schedule 26.02.2014


Ответы (1)


Jpeg должен быть включен при установке GD2; http://php.net/manual/en/image.installation.php

person Michael Benjamin    schedule 25.02.2014