Как вывести высоту и ширину изображения

Подскажите как получить width и height изображения — и вывести их?
Спасибо огромное!
Alex
05 января 2023, 17:19
modx.pro
417
0

Комментарии: 9

Alex
05 января 2023, 21:47
0
Пробую создать снипет…
но чтото не получается
<?php
list ($width, $height, $type, $attr) = getimagesize($input);
switch ($options) {
    case 'w' :
        return $width;
        break;
    case 'h' :
        return $height;
        break;
    default :
        return '';
        break;
}
Прошу помощи
    Алексей Смирнов
    06 января 2023, 09:36
    +1
    так вы уже все и получили. просто не ясно для чего switch
    list ($width, $height, $type, $attr) = getimagesize($input);
    print($width);
      Alex
      06 января 2023, 14:27
      0
      <img src="[[*imagetv]]" width="[[*imagetv:imgsize=`w`]]" height="[[*imagetv:imgsize=`h`]]" />
      Не работает, — выводит только ссылку на картинку

      И очень долго обрабатывает…

      Забыл уточнить что у меня WEBP
      вот нашел код в сети — но незнаю как его адаптировать под свои нужды, и подойдет ли он:
      // Путь к файлу изображения
      $file_path='sample.webp';
       
      $f=fopen($file_path,'r');
      $data=fread($f,32);
      fclose($f);
      // Simple File Format (Lossy)
      if (substr($data,8,8)=='WEBPVP8 ') {
          $tmp=unpack('v',substr($data,0x1A,2));
          $x=$tmp[1];
          $tmp=unpack('v',substr($data,0x1C,2));
          $y=$tmp[1];
      }
      // Simple File Format (Lossless)
      elseif (substr($data,8,8)=='WEBPVP8L') {
          $tmp=unpack('V',substr($data,0x15,4));
          $x=($tmp[1] & 0x3FFF)+1;
          $y=(($tmp[1]>>14) & 0x3FFF)+1;
      }
      // Extended File Format
      elseif (substr($data,8,8)=='WEBPVP8X') {
          $tmp=unpack('V',substr($data,0x18,4));
          $x=($tmp[1] & 0xFFFFFF)+1;
          $tmp=unpack('V',substr($data,0x1B,4));
          $y=($tmp[1] & 0xFFFFFF)+1;
      }
      else {
          $x=0;
          $y=0;
      }
        Алексей Смирнов
        06 января 2023, 14:43
        1
        +1
        О, вот теперь по этому выводу понятно чего вы хотите достигнуть:
        <img src="[[*imagetv]]" width="[[*imagetv:imgsize=`w`]]" height="[[*imagetv:imgsize=`h`]]" />
        Смотрите.
        снипет получает данные в $input
        плюс к тому в функцию getimagesize должен приходить полный путь картинки.
        поэтому я бы сделал так:
        $img = MODX_BASE_PATH . $input;
        list ($width, $height, $type, $attr) = getimagesize($img);
        switch ($options) {
            case 'w' :
                return $width;
                break;
            case 'h' :
                return $height;
                break;
            default :
                return '';
                break;
        }
          Alex
          06 января 2023, 17:10
          0
          Я понял причину- почему не работает. У меня абсолютные пути к файлу (Под Бабел, много контекстов — пришлось сделать). Теперь путь к файлу идет
          https: // 4444444444s.com/assets/images/demobg.jpg

          если прописать "/assets/images/demobg.jpg"
          все работает.
          в таблице modx_site_tmplvar_contentvalues — тоже все прописано через "/assets/images/demobg.jpg"

          Теперь снова думать как велосипед делать)))
            Алексей Смирнов
            06 января 2023, 19:05
            +1
            А что тут велосепедить? Просто вырезайте с помощью функции домен и добавляйте нормальный путь как я показал… И получится серверный путь который и нужен.
              Alex
              06 января 2023, 19:28
              0
              подскажи пожалуйста, есть два снипета — как проверить их скорость работы на выдачу результата?
                Алексей Смирнов
                07 января 2023, 22:34
                +1
                в php есть функция microtime ставите в начало фиксируете показания ($asd = mictotime)
                И в конце скрипта вычитаете из print $asd — mictorime.
                как-то так.
                  Alex
                  10 января 2023, 22:31
                  0
                  Спасибо )
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      9