PHP . SU
Программирование на PHP, MySQL и другие веб-технологии
Без описания
Поиск в теме | Версия для печати
EuGen
Отправлено: 11 Ноября, 2011 - 15:12:03
Профессионал
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007
Откуда: Berlin
Помог: 707 раз(а)
Имеется ввиду, что нужно вычислять новые измерения изображения, так, чтобы созранять пропорции и влезло в новое разрешение?
Тогда примерно так:
PHP:
скопировать код в буфер обмена
function refactorSize( $rgSizeFrom , $rgSizeTo )
{
if ( ! is_array ( $rgSizeFrom ) ||! is_array ( $rgSizeTo ) || count
( $rgSizeFrom ) != 2 || count
( $rgSizeTo ) != 2
) {
throw new Exception( 'Given dimensions are illegal' ) ;
}
if ( array_key_exists ( 'height' , $rgSizeFrom ) && array_key_exists
( 'width' , $rgSizeFrom ) ) {
$rgSizeFrom = array ( $rgSizeFrom [ 'height' ] , $rgSizeFrom [ 'width' ] ) ; }
{
$rgSizeTo = array ( $rgSizeTo [ 'height' ] , $rgSizeTo [ 'width' ] ) ; }
$heightFrom = $rgSizeFrom [ 0] ;
$widthFrom = $rgSizeFrom [ 1] ;
$heightTo = $rgSizeTo [ 0] ;
$widthTo = $rgSizeTo [ 1] ;
if ( $heightTo > $widthTo )
{
$rgResult [ 'width' ] = $widthTo ;
$rgResult [ 'height' ] = $heightFrom * $widthTo / $widthFrom ;
}
else
{
$rgResult [ 'width' ] = $widthFrom * $heightTo / $heightFrom ;
$rgResult [ 'height' ] = $heightTo ;
}
return $rgResult ;
}
$rgSize = array ( 'height' => 600 , 'width' => '800' ) ; $rgTo = array ( 'height' => 1440 , 'width' => 900
) ;
//var_dump(refactorSize($rgSize, $rgTo));
Далее делаете изменение размера стандартными php-средствами (насколько я понял задачу, она не в том разделе, ну да может я ошибаюсь)
-----Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
armancho7777777
Отправлено: 22 Декабря, 2011 - 00:15:54
Активный участник
Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011
Откуда: Москва
Помог: 221 раз(а)
Размер изображения будет изменяться так же и при изменении окна браузера.
CODE (
javascript ):
скопировать код в буфер обмена
$( document) .ready ( function ( ) {
/////////////////////////////////////////////////////////////////////////////////////////
// ВЫСТАВЛЯЕМ РАЗМЕРЫ КАРТИНОК В СООТВЕТСТВИИ С РАЗМЕРОМ ОКНА /////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////
var windowW3, imgW = [ ] , imgH = [ ] , imgW2 = [ ] , imgH2 = [ ] , imgWNatur = [ ] , imgHNatur = [ ] ;
var win = $( window) ;
var doc = $( document) ;
var tabIndexPageImg = $( '#tabIndexPageImg' ) ;
var docW = doc.width ( ) ; // Ширина документа
// Процент от размера окна (т.е. 100%)
var windowW2 = windowW/ docW* 100 ;
windowW2 = parseInt( windowW2, 10) ;
// Процент от размера окна для старта ресайза
var windowW22 = windowW/ windowW* 100 ;
windowW22 = parseInt( windowW22, 10) ;
// ВЫСТАВЛЯЕМ РАЗМЕРЫ ////////////////////////////////////////////////////////
tabIndexPageImg.find ( 'img' ) .each ( function ( index, element) {
imgWNatur[ index] = $( this ) .attr ( "width" ) ; // Реальная ширина...
imgHNatur[ index] = $( this ) .attr ( "height" ) ; // ... и высота изображения
imgW[ index] = imgWNatur[ index] * windowW2/ 100 ;
imgW[ index] = parseInt( imgW[ index] , 10) ;
imgH[ index] = imgHNatur[ index] * windowW2/ 100 ;
imgH[ index] = parseInt( imgH[ index] , 10) ;
if ( imgW[ index] <= imgWNatur[ index] ) {
$( this ) .css ( { 'width' : imgW[ index] , 'height' : imgH[ index] } ) ; // Картинка
} else {
$( this ) .css ( { 'width' : imgWNatur[ index] , 'height' : imgHNatur[ index] } ) ; // Картинка
}
} ) ;
//////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////
// РЕСАЙЗИМ РАЗМЕРЫ КАРТИНОК В СООТВЕТСТВИИ С РАЗМЕРОМ ОКНА ///////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////
win.resize ( function ( ) {
// Вычисляем процент от общего размера
windowW2 = windowW3/ docW* 100 ;
windowW2 = parseInt( windowW2, 10) ;
// Меняем размер, в зависимости от процента
windowW3 = windowW3* windowW22/ 100 ;
windowW3 = parseInt( windowW3, 10) ;
// САМ РЕСАЙЗ ///////////////////////////////////////////////////////////////
tabIndexPageImg.find ( 'img' ) .each ( function ( index, element) {
imgW2[ index] = $( this ) .width ( ) ;
imgH2[ index] = $( this ) .height ( ) ;
imgW2[ index] = imgWNatur[ index] * windowW2/ 100 ;
imgW2[ index] = parseInt( imgW2[ index] , 10) ;
imgH2[ index] = imgHNatur[ index] * windowW2/ 100 ;
imgH2[ index] = parseInt( imgH2[ index] , 10) ;
if ( imgW2[ index] <= imgWNatur[ index] ) {
$( this ) .css ( { 'width' : imgW2[ index] , 'height' : imgH2[ index] } ) ; // Картинка
} else {
$( this ) .css ( { 'width' : imgW[ index] , 'height' : imgH[ index] } ) ; // Картинка
}
} ) ;
//////////////////////////////////////////////////////////////////////////////
} ) ;
} ) ;
Выставьте обязательно атрибуты width и height тега img у изображений:
(Отредактировано автором: 22 Декабря, 2011 - 00:22:03)
armancho7777777
Отправлено: 22 Декабря, 2011 - 08:25:31
Активный участник
Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011
Откуда: Москва
Помог: 221 раз(а)
DeepVarvar пишет: $("#img").width(parseInt($(window).width(),10));
Что это такое?
Вы задаёте ширину картинке равную окну браузера)
А надо вычислять % ресайза + % уменьшения от реальных размеров изображения, и т.д.
tuareg
Отправлено: 22 Декабря, 2011 - 23:31:12
Участник
Покинул форум
Сообщений всего: 1234
Дата рег-ции: Июнь 2010
Помог: 69 раз(а)
А тут что проверять? Вот код
CODE (
javascript ):
скопировать код в буфер обмена
$( window) .on ( 'resize' , null , function ( ) {
var ww = $( window) .width ( ) , pad = ww/ 100* 10 ;
$( "#img" ) .width ( parseInt( ww- pad, 10) ) ;
} )
И как бы все...
armancho7777777
Отправлено: 23 Декабря, 2011 - 10:23:49
Активный участник
Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011
Откуда: Москва
Помог: 221 раз(а)
tuareg пишет: А тут что проверять? Вот код
CODE (
javascript ):
скопировать код в буфер обмена
$( window) .on ( 'resize' , null , function ( ) {
var ww = $( window) .width ( ) , pad = ww/ 100* 10 ;
$( "#img" ) .width ( parseInt( ww- pad, 10) ) ;
} )
И как бы все...
А Вы проверьте. Как он работать будет.
Поиск в теме | Версия для печати
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« JavaScript & VBScript »
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
Powered by ExBB FM 1.0 RC1. InvisionExBB