Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Работа с JPEG - изменение изображения 
:(
    Опции темы
InfMag
Дата 11.4.2005, 18:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



***


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

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



Я имею код:
Код

<?php
header("Content-type: image/jpeg");
if ($_GET['src'])
{
    $img = ImageCreateFromJpeg($_GET['src']);
    $imgWidth = ImageSX($img);
    $imgHeight = ImageSY($img);
    $newHeight = 150;
    $new_img = ImageCreateTrueColor(150, $newHeight); 
    ImageCopyResized($new_img, $img, 0, 0, 0, 0, 150, $newHeight, $imgWidth, $imgHeight);
    ImageDestroy($img);
    ImageJpeg($new_img);
    ImageDestroy($new_img);
}
?>

Но дело в том, что $newHeight не должен равняться 150, а должен равняться пропорциональному размеру ширины 150.
То-бишь я уменьшаю любой рисунок до 150, а ширина уменьшается до нужного размера, как это сделает браузер если в теге <img> писать только width, без height.
То-бишь высота рисунка уменьшется относительно уменьшенной ширине.
Мне очень срочно нужно решить эту проблему, прошу помощи. smile
PM   Вверх
Aliance
Дата 11.4.2005, 19:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 14
Всего: 137



PM MAIL WWW ICQ Skype   Вверх
InfMag
Дата 11.4.2005, 21:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



***


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

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



Aliance
Ты наверно так неудачно шутишь, да? Причем тут этот хлам? У меня башню кругом воротит. И где там PHP? smile
PM   Вверх
Irokez
Дата 11.4.2005, 22:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


индеец
***


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

Репутация: 22
Всего: 53



Код

$newHeight =  round($imgHeight * ($imgWidth / $newWidth));

PM   Вверх
penizillin
Дата 11.4.2005, 22:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 8
Всего: 9



Цитата(InfMag @ 11.4.2005, 16:46)
То-бишь высота рисунка уменьшется относительно уменьшенной ширине.


есть, скажем, pic.jpg - 800 x 600
снижаем ширину до 150 (определенная величина).

фактор = 150/600 = 0,25

умножаем высоту на фактор:

800*0,25 = 200

значит, новая высота - 200.
PM MAIL ICQ   Вверх
InfMag
Дата 12.4.2005, 06:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



***


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

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



Irokez
Видимо ты ошибся. smile Я аж испугался, когдя рисунки стали в два раза большое своего height'а.
Все-равно хоть попытался помочь. smile

penizillin
А в коде ты мне можешь объяснить? А то я так не фтыкаю. smile smile
Добавлено @ 06:56
penizillin
Вот то, что я написал. Работает, но в обратную сторону. smile То-бишь уменьшает высоту.
Код

<?php
header("Content-type: image/jpeg");
if ($_GET['src'])
{
    $img = ImageCreateFromJpeg($_GET['src']);
    $imgWidth = ImageSX($img);
    $imgHeight = ImageSY($img);
    $newWidth = 150;
    $newHeight = round($imgWidth * ($newWidth / $imgHeight));
    $new_img = ImageCreateTrueColor($newWidth, $newHeight); 
    ImageCopyResized($new_img, $img, 0, 0, 0, 0, $newWidth, $newHeight, $imgWidth, $imgHeight);
    ImageDestroy($img);
    ImageJpeg($new_img);
    ImageDestroy($new_img);
}
?>

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


индеец
***


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

Репутация: 22
Всего: 53



Цитата(InfMag @ 12.4.2005, 06:52)
Irokez
Видимо ты ошибся. smile Я аж испугался, когдя рисунки стали в два раза большое своего height'а.
Все-равно хоть попытался помочь. smile

сорри, наоборот
Код

$newHeight =  round($imgHeight * ($newWidth / $imgWidth));

PM   Вверх
InfMag
Дата 12.4.2005, 10:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



***


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

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



Irokez
Ох, превиликое спасибо.
Я замаялся уже думать, а оказалось надо было кое-что переставить местами для обратного эффекта.
Большое еще раз спасибо. smile smile
Добавлено @ 10:17
Кстати, вот готовый код:
image.php
Код

<?php
header("Content-type: image/jpeg");
if ($_GET['src'])
{
    $img = ImageCreateFromJpeg($_GET['src']);
    $imgWidth = ImageSX($img);
    $imgHeight = ImageSY($img);
    $newWidth = 150;
    $newHeight = round($imgHeight * ($newWidth / $imgWidth));
    $new_img = ImageCreateTrueColor($newWidth, $newHeight); 
    ImageCopyResized($new_img, $img, 0, 0, 0, 0, $newWidth, $newHeight, $imgWidth, $imgHeight);
    ImageDestroy($img);
    ImageJpeg($new_img);
    ImageDestroy($new_img);
}
?>

Для тех, кто будет юзать: рисунки смотреть так: <img src="image.php?src=images/picture.jpg"> smile smile
PM   Вверх
Irokez
Дата 12.4.2005, 10:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


индеец
***


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

Репутация: 22
Всего: 53



Цитата(InfMag @ 12.4.2005, 10:15)
Для тех, кто будет юзать: рисунки смотреть так: <img src="image.php?src=images/picture.jpg"> smile smile

а вот так вот по большому счету делать нельзя ... сервак можно завалить =)
PM   Вверх
Ignat
Дата 12.4.2005, 10:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Флудератор
****


Профиль
Группа: Экс. модератор
Сообщений: 4030
Регистрация: 19.4.2004
Где: غيليندزيك مدينة

Репутация: 10
Всего: 73



Цитата(InfMag @ 12.4.2005, 11:15)
image.php?src=images/picture.jpg

а это дырочка в защите smile


--------------------
Теперь при чем :P
PM   Вверх
InfMag
Дата 12.4.2005, 10:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



***


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

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



Как? Скрипт же тока рисунки обрабатывает. Это же не инклуд. smile
Добавлено @ 10:37
Мне-то впринцыпе как-то по барабану, могу и по id сделать. У меня все рисунки в базе прописаны.
PM   Вверх
Irokez
Дата 12.4.2005, 10:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


индеец
***


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

Репутация: 22
Всего: 53



тут просто воможно использовать твой сервак как прокси, напр:
<img src="image.php?src=http://www.yandex.ru/img/logo.gif">
и твой скприт будет генерировать уменьшенный логотип яндекса, поверь злоумышленники найдут как этим воспользоваться smile
PM   Вверх
InfMag
Дата 12.4.2005, 11:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



***


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

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



Irokez
А... Ну это то понятно. smile Что-ж буду индексировать по id в базе. smile
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




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


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

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