Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Изменение размеров изображения без потерь 
:(
    Опции темы
Innuendo
Дата 26.12.2007, 18:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 745
Регистрация: 24.12.2005
Где: Молдова

Репутация: 2
Всего: 6



Здравствуйте форуме.

Есть сайт, 3-х колоночный... Левая и правая колонки имеют ширину в 200 пикселей (там изображения в 200 пикселей). Средняя колонка имеет оставшуюся ширину.

Всё работет, нормально. Но вот при разрешении 800*600 получается довольно узкая средняя колонка (это при увеличении ширины всего контента при таком разрешении).
И я посмотрел, если бы картинки были 150 пикселей, то было бы отлично. Сделал копии картинок в 150 пикселей. Они хорошо без глюков подменяются если сайт загружается с 800*600.
Но просто это не совсем удобно при администрировании сайта - надо всегда загружать 2 типа изображений и корректировать скрипт (изменять переменную с кол-во изображений и т.д.)

Вот и возник у меня вопрос. Можно ли как-то просто изменять width изображению? Вообще можно, но тогда изображение получается какое-то искаженное (соотношение размеров остаётся)... к примеру линии на изображениях становятся кривоваты, и текст не очень читаем.
Можно ли это как-то исправить? есть ли способ уменьшения изображения без потерь качества?


Заранее спасибо


--------------------
=)
PM MAIL ICQ Jabber   Вверх
ksnk
Дата 26.12.2007, 19:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 84
Всего: 386



...

Это сообщение отредактировал(а) ksnk - 26.12.2007, 19:15


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
Innuendo
Дата 26.12.2007, 20:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 745
Регистрация: 24.12.2005
Где: Молдова

Репутация: 2
Всего: 6



???


--------------------
=)
PM MAIL ICQ Jabber   Вверх
SelenIT
Дата 26.12.2007, 20:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

Репутация: 49
Всего: 401



Может, лучше обрезать края картинки (напр. с помощью контейнера с overflow:hidden, или вообще положить картинку бэкграундом)?


--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
PM MAIL   Вверх
Innuendo
Дата 27.12.2007, 01:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 745
Регистрация: 24.12.2005
Где: Молдова

Репутация: 2
Всего: 6



SelenIT, можно было бы.. но картинки важные... нельзя обрезать...


--------------------
=)
PM MAIL ICQ Jabber   Вверх
ksnk
Дата 27.12.2007, 08:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 84
Всего: 386



Может ли какой-нибудь ImageMagic на сервере, автоматически генерирующий более корректное маленькое изображение, решить эту проблему? 


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
Innuendo
Дата 27.12.2007, 13:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 745
Регистрация: 24.12.2005
Где: Молдова

Репутация: 2
Всего: 6



я так понимаю я не могу его установить если платный хостинг..


--------------------
=)
PM MAIL ICQ Jabber   Вверх
InfMag
Дата 27.12.2007, 14:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



***


Профиль
Группа: Завсегдатай
Сообщений: 1037
Регистрация: 21.11.2004

Репутация: 2
Всего: 4



Innuendo, ну ты создай и такие и такие картинки и java скриптом проверяй разрешение, если оно больше 800 на 600, то выводи картинки другие, которые шире....
PM   Вверх
Innuendo
Дата 28.12.2007, 20:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 745
Регистрация: 24.12.2005
Где: Молдова

Репутация: 2
Всего: 6



InfMag, ну пока я так и делаю (написано в 1 -ом посте)... просто сдам сайт, и обновлять его будет другой чел. И при добавлении картинки нужно создавать каждый раз 2 изображения с определенными именами, и изменять пару переменных в скрипте...
Хотя можно написать пхп скрипт, который облегчает работу тому человеку, сам определяет кол-во изображений в папке и передает это переменной яваскрипт, и при загрузке сам их правильно называет... и т.д.


--------------------
=)
PM MAIL ICQ Jabber   Вверх
Ghirik
Дата 29.12.2007, 07:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 919
Регистрация: 26.3.2007

Репутация: 13
Всего: 20



Нет, ну есть масса php-скриптов(простейших), которые позволяют при загрузке автоматически генерить добавочные уменьшенные изображения. Эти изображения получаются вполне хорошего качества. Если вы будете загружать эти изображения через такой php-скрипт, будет всё пучком smile 

Вот например php-класс (да простят меня модераторы):

Код

<?
/* попытка создания класса
 *задачи:
 *-создать эскиз в каталоге $ThumbDir
 * с высотой  $ThumbHeight и пропорциональной шириной
 *-закачать изображение в каталог  $GaleryDir
 *
 *пример употребления в пищу:
 * include ($_SERVER['DOCUMENT_ROOT']."/classes/galery.class");
 * $nGalery = new Galery;
 * $nGalery->GaleryDir=$GALERY_DIR;
 * $nGalery->ThumbDir=$THUMBS_DIR;
 * $nGalery->ThumbHeight = 150;//задаем высоту эскизов
 * $nGalery->UploadName=time()-1104516000; //делаем названия файлов уникальными (тупо, но по другому   пока не придумал)
 * $nGalery->Image=($_FILES['image']['tmp_name']);
 * $about_image=$nGalery->CheckImgType(); //выбираем данные об изображении для дальнейшей работы

*/
class Galery
{
  var $GaleryDir; //путь на диске к файлам изображений (что-то типа getenv("DOCUMENT_ROOT").'/usrfiles/galery/')
  var $GaleryURL; //путь для браузера к тем же файлам (например '/usrfiles/galery/')
  var $ThumbDir;  //путь к превьюшкам (предполагается вроде $GaleryDir.'thumbs' )
  var $ThumbURL;  //понятно что
  var $ThumbHeight;// высота превьюшек (захотелось вот их по высоте выравнивать;-))
  var $Image; //
  var $UploadName;

  function CheckImgType() //проверка соответствия изображения моим требованиям + инфа о нем для дальнейшего применения
  {
    $imgtype = @getimagesize($this->Image);
    $image_w = $imgtype[0];
    $image_h = $imgtype[1];
    switch($imgtype[2])
    {
      case 1:
      $image_type= "GIF";
      $image_ext = ".gif";
      $image_crt = imagecreatefromgif($this->Image);
      break;

      case 2:
      $image_type= "JPEG";
      $image_ext = ".jpg";
      $image_crt = imagecreatefromjpeg($this->Image);
      break;

      case 3:
      $image_type= "PNG";
      $image_ext = ".png";
      $image_crt = imagecreatefrompng($this->Image);
      break;

      case 6:
      $image_type= "BMP";
      $image_ext = ".bmp";
      $image_crt = imagecreatefromwbmp($this->Image);
      break;

      default:
      $image_err = "изображения могут быть только в формате GIF, JPEG, PNG или BMP";
    }
      if(!$image_err)
      {
      return array("type"=>$image_type,"ext"=>$image_ext,"create"=>$image_crt,"width"=>$image_w,"height"=>$image_h);
      }
      else
      {
        return array("error"=>$image_err);
      }
  }

  function CreateThumb() //сия функция создает собственно превью
  {
    $check_img=$this->CheckImgType();
    if($check_img['type'])
    {
    $final_thumb_name = $this->ThumbDir.$this->UploadName.".jpg"; //сделаем их всех JPEG-ами , чтоб не напрягаться
    $width = imagesx($check_img['create']);                                 //ширина оригинала
    $height = imagesy($check_img['create']);                                //высота оригинала
    $thumb_width = ($this->ThumbHeight * $width) / $height;
    $thumb = imagecreatetruecolor($thumb_width, $this->ThumbHeight);
    imagecopyresampled($thumb,$check_img['create'],0,0,0,0,$thumb_width,$this->ThumbHeight,$width,$height);
    imageJPEG($thumb, $final_thumb_name);
    imagedestroy($check_img['create']);
    }
  }


  function UploadImg()
  {
    $this->CreateThumb();
    if(is_uploaded_file($this->Image))
    {
      $about_image=$this->CheckImgType();
      move_uploaded_file($this->Image,$this->GaleryDir.$this->UploadName.$about_image['ext']);
    }
  }
  function ViewImage()
  {

  }
}
?>


Если этот вариант интересен, у меня где то есть ещё вариант, в виде функции.

Добавлено через 3 минуты и 17 секунд
И ещё, во вложении...

Присоединённый файл ( Кол-во скачиваний: 7 )
Присоединённый файл  upload_resize.zip 5,19 Kb


--------------------
Отдадим всё клиенту, пускай его машина мучается...

PM MAIL   Вверх
ksnk
Дата 29.12.2007, 09:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 84
Всего: 386



Цитата(Innuendo @  26.12.2007,  18:44 Найти цитируемый пост)
есть ли способ уменьшения изображения без потерь качества?


Цитата(Innuendo @  28.12.2007,  20:20 Найти цитируемый пост)
И при добавлении картинки нужно создавать каждый раз 2 изображения с определенными именами, и изменять пару переменных в скрипте...

Может чего неправильно в планировании? Разумнее будет позволить админу заливать одну или две картинки по его, админа, выбору. Пусть уж дальше скрипт сам решает - если второй нет - путь большую броузер уменьшает, или там PHP автоматически слепит (с тем-же качеством ;)) 
Переменные в скрипте менять...? Это что? Есть скрипт, есть данные и смешивать их - "нехорошо"...

Добавлено через 1 минуту и 58 секунд
Ghirik, Обратите внимание, что функция imagecreatefromwbmp не имеет отношения к формату BMP !


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
Innuendo
Дата 29.12.2007, 20:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 745
Регистрация: 24.12.2005
Где: Молдова

Репутация: 2
Всего: 6



ksnk
Ghirik

cпасибо. надеюсь разберусь в этом пхп коде и смогу его проредактировать под меня.


--------------------
=)
PM MAIL ICQ Jabber   Вверх
Ghirik
Дата 29.12.2007, 21:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 919
Регистрация: 26.3.2007

Репутация: 13
Всего: 20



Цитата

Ghirik, Обратите внимание, что функция imagecreatefromwbmp не имеет отношения к формату BMP !


Я в php-коде понимаю только комментарии...  smile 


--------------------
Отдадим всё клиенту, пускай его машина мучается...

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1220 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.