Новости Joomla

Компонент View logs v.2.2.0

👩‍💻 Компонент View logs v.2.2.0.По горячим следам, рекомендациям и просьбам Joomla-сообщества компонент просмотра логов Joomla получил следующую версиюv.2.2.0. Что нового?- Обновление интерфейса: список логов сделан в виде таблицы, отображение дополнительной информации в списке файлов (время создания и последнего изменения, кнопки действий и их порядок) изменены и сделаны менее пёстрыми.- Добавлен поиск-фильтр по имени файла лога на странице. Находите нужный файл быстрее.- Большие файлы. Просмотр файла лога в модальном окне сохранён для файлов менее 1МБ. Возможность открыть файл в отдельном окне сохранена. Но используйте эту функцию с осторожностью: файлы объёмом 8-10мб ещё возможно открывать в браузере, но более крупные - не рекомендуется. Системные требования:- Совместимость с Joomla 6 и PHP 8.4.- Минимальная версия PHP по-прежнему 8.0.Страница расширенияGitHub расширения@joomlafeed#joomla #расширения

0 Пользователей и 1 Гость просматривают эту тему.
  • 10 Ответов
  • 4601 Просмотров
*

CanVas

  • Захожу иногда
  • 92
  • 0 / 0
  • Freedom
Здравствуйте! К2  v2.6.5 Joomla 2.5.
В настройках задаётся только ширина изображений. И если я загружаю горизонтальные и вертикальные фотки, то вертикальные всегда не влазят в экран по высоте. либо горизонтальные получаются слишком маленьких размеров.
Решение вижу одно. т.к. задаётся ширина - надо просто подправить функцию изменения изображения, чтобы расчёт новых размеров изображения был не только по ширине а по ширине и высоте. Нашёл в файле class.upload.php вот такие строки функции которая собственно изменяет изображение:

Код
 if ($gd_version >= 2) {
                            $res = imagecopyresampled($tmp, $image_src, 0, 0, 0, 0, $w, $h, imagesx($image_src), imagesy($image_src) );
                        } else {
                            $res = imagecopyresized($tmp, $image_src, 0, 0, 0, 0, $w, $h, imagesx($image_src), imagesy($image_src) );
                        }
И нашёл вот такой код своей функции изменения изображения:
Код
// Создаем саму функцию:
 
// $infile - входящий графический файл
// $outfile - измененый файл
// $neww - новая ширина
// $newh - новая высота
// $quality - качество измененного рисунка
function imageresize($outfile,$infile,$neww,$newh,$quality) {
$im=imagecreatefromjpeg($infile); // Создаем графический объект из входящего файла
 
// Далее вычесляем ширину и высоту входящего файла и создаваемого фала:
$k1=$neww/imagesx($im);
$k2=$newh/imagesy($im);
$k=$k1>$k2?$k2:$k1;
 
$w=intval(imagesx($im)*$k);
$h=intval(imagesy($im)*$k);
 
$im1=imagecreatetruecolor($w,$h); // Создаем новый графический объект в который запишем измененный рисунок; $w,$h - ширина и высота
imagecopyresampled($im1,$im,0,0,0,0,$w,$h,imagesx($im),imagesy($im)); // Копируем входящий рисунок в исходящий в начало координат.
 
imagejpeg($im1,$outfile,$quality); // сохраняем файл в jpg формате с заданным качеством
imagedestroy($im); // разрушаем входящий файл
imagedestroy($im1); // разрушаем исходящий файл
}
 
// Запускаем функцию
imageresize("","webcam.jpg",640,240,75);

Помогите кто чем может?
*

jurassik

  • Давно я тут
  • 692
  • 52 / 1
Здравствуйте! К2  v2.6.5 Joomla 2.5.
В настройках задаётся только ширина изображений. И если я загружаю горизонтальные и вертикальные фотки, то вертикальные всегда не влазят в экран по высоте. либо горизонтальные получаются слишком маленьких размеров.
на форуме есть решение, см. FAQ
сам шучу - сам смеюсь
*

CanVas

  • Захожу иногда
  • 92
  • 0 / 0
  • Freedom
на форуме есть решение, см. FAQ
там 2 темы. одна про обрезание фото, а мне надо пропорциональное уменьшение, и к тому же по ходу написана про более старую версию, где в настройках задаётся именно ширина и высота. а в моём компоненте к2 везде только ширина. Что собственно и является проблемой.
И вторая тема - у которой 2 ссылки, и ни одна не рабочая.

Ещё советы есть?
*

jurassik

  • Давно я тут
  • 692
  • 52 / 1
а мне надо пропорциональное уменьшение
пропорциональное уменьшение - это то что делает компонент стандартно.
сам шучу - сам смеюсь
*

CanVas

  • Захожу иногда
  • 92
  • 0 / 0
  • Freedom
нееет. смотрите. я ставлю ширину допустим 800
Он уменьшает фотку. на мониторе шириной 1024 пикселя, горизонтальное фото отображается нормально.
А вот если фото вертикальное, оно получается по высоте очень большим! и не влазит в монитор.

Поэтому и надо "вписать в заданную область"
*

jurassik

  • Давно я тут
  • 692
  • 52 / 1
нееет. смотрите. я ставлю ширину допустим 800
Он уменьшает фотку. на мониторе шириной 1024 пикселя, горизонтальное фото отображается нормально.
А вот если фото вертикальное, оно получается по высоте очень большим! и не влазит в монитор.

Поэтому и надо "вписать в заданную область"
у Вас 2 фото
8000х800 и 800х8000
какие у него должны быть новые размеры?
сам шучу - сам смеюсь
*

CanVas

  • Захожу иногда
  • 92
  • 0 / 0
  • Freedom
у Вас 2 фото
8000х800 и 800х8000
какие у него должны быть новые размеры?
я задаю в настройках ширину 600. он и делает ширину тупо 600.
по  существующему алгоритму получается
600х60 и 600х6000

вот эти 6000 мне и не нравятся! Высота в настройках к2 не задаётся нигде. (я всё обшарил, ничего не нашёл, если не прав, ткните носом)
я вижу решение какое, чтобы когда я ввожу ширину 600 он и высоту делал 600.

т.е. вписывал изображение пропорционально уменьшая по высоте или ширине (смотря какая из них больше), в квадрат 600 на 600.

тогда изображения будут в итоге
600х60 и 60х600.
вот и всё.

*

jurassik

  • Давно я тут
  • 692
  • 52 / 1
тогда изображения будут в итоге
600х60 и 60х600.
тогда к2 не обязательно хакать.
все генерируемые изображения 600 в ширину
в CSS для изображений прописать max-height:600px;width:auto
сам шучу - сам смеюсь
*

CanVas

  • Захожу иногда
  • 92
  • 0 / 0
  • Freedom
тогда к2 не обязательно хакать.
все генерируемые изображения 600 в ширину
в CSS для изображений прописать max-height:600px;width:auto
Про это свойство я знаю. я прикрутил плагин slimbox на увеличенное изображение. И там высота рассчитывается относительно фактической высоты изображения. Да, есть другой вариант, лезть в slimbox но я думаю там высота не в одном месте прописана, в отличие от к2. к2 один раз создал фотку и всё. а slimbox вычисляет размеры, потом рисует анимацию, потом рисует элементы вокруг. так что это сложнее.
*

CanVas

  • Захожу иногда
  • 92
  • 0 / 0
  • Freedom
Переписал функцию вот так
Код
$a = $this->image_dst_x;
if ($x>$y) {
$x2=$a;
$y2=($y/$x)*$a;
} else {
$y2=$a;
$x2=($x/$y)*$a;
}


//


                        if ($gd_version >= 2) {
                            $res = imagecopyresampled($tmp, $image_src, 0, 0, 0, 0, $x2, $y2, imagesx($image_src), imagesy($image_src) );
                        } else {
                            $res = imagecopyresized($tmp, $image_src, 0, 0, 0, 0, $x2, $y2, imagesx($image_src), imagesy($image_src) );
                        }

В итоге по ширине нормально изменяет. а по высоте получается белая область :(
смотрите скрин во вложении
« Последнее редактирование: 06.05.2013, 13:56:16 от CanVas »
*

CanVas

  • Захожу иногда
  • 92
  • 0 / 0
  • Freedom
Всё получилось.
Решение: в файле /administrator/components/com_k2/lib/cluss.upload.php

Ищем по слову "imagecopyresampled"
И находим вот такой кусок кода:
Код
$tmp = $this->imagecreatenew($this->image_dst_x, $this->image_dst_y);

                        if ($gd_version >= 2) {
                            $res = imagecopyresampled($tmp, $image_src, 0, 0, 0, 0, $this->image_dst_x, $this->image_dst_y, $this->image_src_x, $this->image_src_y);
                        } else {
                            $res = imagecopyresized($tmp, $image_src, 0, 0, 0, 0, $this->image_dst_x, $this->image_dst_y, $this->image_src_x, $this->image_src_y);
                        }
Меняем его на такой вот код:
Код
$a = $this->image_dst_x;
$x = imagesx($image_src);
$y = imagesy($image_src);

if ($x>$y) {
$x2=$a;
$y2=($y/$x)*$a;
} else {
$y2=$a;
$x2=($x/$y)*$a;
}

                        $tmp = $this->imagecreatenew($x2, $y2);

                        if ($gd_version >= 2) {
                            $res = imagecopyresampled($tmp, $image_src, 0, 0, 0, 0, $x2, $y2, imagesx($image_src), imagesy($image_src) );
                        } else {
                            $res = imagecopyresized($tmp, $image_src, 0, 0, 0, 0, $x2, $y2, imagesx($image_src), imagesy($image_src) );
                        }

После чего пытаемся перезалить фото заново.
Итог: Размер изображения вычисляется не только по ширине (width) но и по высоте. т.е. высота делается равной ширине, и изображение вписывается в этот квадрат.

Важно! При обновлении k2 эта библиотека может обновиться и все ваши изменения слетят.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться