Как вывести картинку?

Тема в разделе "Веб-разработка", создана пользователем irbis0108, 19 мар 2014.

Статус темы:
Закрыта.
  1. irbis0108

    irbis0108 На форуме с: 27 мар 2013 Сообщения: 16

    Я вот озадачил себя: Написать\найти код или скрипт, какой-нибудь, чтобы он обрезал картинку, ну типа превьюшки поста с мини картинкой, в котором эта картинка уже большая! И что бы именно обрезал, а не уменьшал. И я нашел такой код, но не пойму как вывести картинку.
    источник: http://www.white-hat-web-design.co.uk/blog/retaining-transparency-with-php-image-resizing/
    PHP:
    <?php
        header
    ('Content-Type: image/jpeg');
        include(
    'SimpleImage.php');
        
    $image = new SimpleImage();
          
    $image->load('img/picture.jpg');
          
    $image->resizeToWidth(150);
          
    $image->output();
       
        
    ?> 
    SimpleImage.php
    PHP:
    <?php 
    class SimpleImage 
        var 
    $image;
        var 
    $image_type
       
        function 
    load($filename) { 
            
    $image_info getimagesize($filename);
            
    $this->image_type $image_info[2];
            if( 
    $this->image_type == IMAGETYPE_JPEG ) { 
            
    $this->image imagecreatefromjpeg($filename);
                }
                elseif( 
    $this->image_type == IMAGETYPE_GIF ) { 
            
    $this->image imagecreatefromgif($filename);
                    }
                    elseif( 
    $this->image_type == IMAGETYPE_PNG ) { 
            
    $this->image imagecreatefrompng($filename); }
                       
        }    
        function 
    save($filename$image_type=IMAGETYPE_JPEG,$compression=75$permission=null) {
        if( 
    $image_type == IMAGETYPE_JPEG ) {
            
    imagejpeg($this->image,$filename,$compression); }
            elseif( 
    $image_type == IMAGETYPE_GIF ) { 
                
    imagegif($this->image,$filename); }
                elseif( 
    $image_type == IMAGETYPE_PNG ) { 
                    
    imagepng($this->image,$filename); }
                    if( 
    $permissions != null) {
                    
    chmod($filename,$permissions); }
                   
        }
       
    function 
    output($image_type=IMAGETYPE_JPEG) {
        if( 
    $image_type == IMAGETYPE_JPEG ) {
            
    imagejpeg($this->image); }
            elseif( 
    $image_type == IMAGETYPE_GIF ) { 
                
    imagegif($this->image); }
                elseif( 
    $image_type == IMAGETYPE_PNG ) {
                    
    imagepng($this->image); } } function getWidth() {
                        return 
    imagesx($this->image);
            }
           
    function 
    getHeight() {  return imagesy($this->image); }
    function 
    resizeToHeight($height) {
        
    $ratio $height $this->getHeight(); $width $this->getWidth() * $ratio$this->resize($width,$height);
        } 
    function 
    resizeToWidth($width) {
        
    $ratio $width $this->getWidth(); $height $this->getheight() * $ratio$this->resize($width,$height);
        } 
    function 
    scale($scale) {
        
    $width $this->getWidth() * $scale/100$height $this->getheight() * $scale/100$this->resize($width,$height);
        } 
    function 
    resize($width,$height) {
        
    $new_image imagecreatetruecolor($width$height);
        
    imagecopyresampled($new_image$this->image0000$width$height$this->getWidth(), $this->getHeight()); $this->image $new_image;
        } 
        }
        
    ?>
        

    Можете разобраться в коде?
  2. Ami

    Ami Модератор На форуме с: 28 ноя 2011 Сообщения: 259 Команда форума

    Картинки бросаем в папку img/picture.jpg, на странице с картинками вставляем верхний код, а SimpleImage.php кидаем в туже папку, где лежит страница с картинками. :a1: Обычно к таким скриптам пишут небольшой мануал.
  3. irbis0108

    irbis0108 На форуме с: 27 мар 2013 Сообщения: 16

    Я же указал источник, откуда я взял скрипт. Там описано как все это работает и что получается, но как выводить саму картинку не написана! И еще - картинки у меня в папке img, и SimpleImage.php у меня в той же папке, я просто кода не знаю как вывести картинку. Все испробовал, место картинки какие-то кракозябры и ошибки.
  4. Ami

    Ami Модератор На форуме с: 28 ноя 2011 Сообщения: 259 Команда форума

    irbis0108, за вывод картинки отвечает
    PHP:
    $image->output();
    Эта строчка ищет необходимую картинку.
    PHP:
    $image->load('img/picture.jpg');
    Я не знаю как у вас выводятся картинки, но они должны проходить через $image->load('img/picture.jpg');
    Можно не выводить, а сохранять картинки, тогда строчку $image->output(); меняем на $image->save('img/kartinka.jpg'); и в папке img появится уменьшенная копия картинки с названием kartinka.jpg. А дальше через тег <img>.
  5. sakhseo

    sakhseo На форуме с: 3 мар 2014 Сообщения: 3

    Убери header('Content-Type: image/jpeg'); и посмотри, может у тебя до вывода картинки ещё что нибуть выводятся. Ошибки к примеру.
    У меня твой пример, именно твой - работает.
    Дальше. У меня свой велосипед, но пока перекусывал, ради интереса погуглил. Попался https://github.com/claviska/SimpleImage
    Посмотрел, более чем достойный class.
    УПС))) описание не совсем соответствует)) брал в другом месте)))
    скачать https://github.com/claviska/SimpleImage/archive/master.zip с примерами
    Бегло глянул, вроде как продолжение разработки твоего, но устранены многие косяки. Это кроме того, что функционал гораздо выше.
Статус темы:
Закрыта.