PHP . SU
Программирование на PHP, MySQL и другие веб-технологии
Страниц (15): В начало « ... 4 5 6 7 [8] 9 10 11 12 ... » В конец
Найдено сообщений: 224
Invert
Отправлено: 14 Декабря, 2013 - 02:50:31 • Тема: Уведомление на сторонний сайт • Форум: Вопросы новичков
Ответов: 19 Просмотров: 709
Не очень понимаю, почему нельзя просто дернуть урл скрипта и передать данные get-ом, всего раз, при установке. Какие-то формы, айфреймы )
Invert
Отправлено: 13 Декабря, 2013 - 18:25:56 • Тема: file_exists • Форум: Вопросы новичков
Ответов: 10 Просмотров: 348
PHP:
скопировать код в буфер обмена
<?PHP
$brand_name = $arResult [ 'PROPERTIES' ] [ 'BRAND' ] [ 'VALUE' ] ;
if ( is_file ( "/upload/brands/{$brand_name} .jpg" ) ) { echo '<a href="#"><img src="/upload/brands/' . $brand_name . '.jpg"/></a>' ;
} else {
echo $brand_name ;
}
?>
Invert
Отправлено: 13 Декабря, 2013 - 17:52:10 • Тема: Последовательный вывод пар button • Форум: Вопросы новичков
Ответов: 3 Просмотров: 176
Dardrin , делайте код проще, понятнее. У вас три вложенных цикла с кучей непонятных переменных, черт ногу сломит. Пусть будет в пять раз длиннее, но так, чтобы окинув строку глазом было сразу понятно, что в ней происходит. Сами себя запутываете.
А ошибка скорее всего в том, что вы запутались в переменных.
Invert
Отправлено: 13 Декабря, 2013 - 15:50:15 • Тема: Скрипт генерации миниатюры с сохранением пропорции • Форум: Графика в PHP
Ответов: 2 Просмотров: 2361
На сайте, для которого писался скрипт, отключена возможность загрузки GIF-ок, да и прозрачные PNG там не используются.
(Добавление)
Обновленный, с учетом прозрачности.
Проверено на GIF и PNG.
PHP:
скопировать код в буфер обмена
function create_preview_image ( $original_path , $thumbnail_path , $x_thumbnail , $y_thumbnail ) {
$result = FALSE ;
// Определяем тип изображения
if ( $image_data && isset ( $image_data [ 'mime' ] ) ) { explode ( '/' , $image_data [ 'mime' ] ) )
) ;
} else {
$mime = 'jpeg' ;
}
// Открываем изображение
switch ( $mime ) {
case 'jpg' :
case 'jpe' :
case 'jpeg' :
break ;
case 'png' :
break ;
case 'gif' :
break ;
case 'wbmp' :
break ;
default :
return FALSE ;
}
// Получаем размеры оригинала
list ( $x_original , $y_original ) = $image_data ; // Создаем миниатюру
if ( $mime == 'png' ) {
// Сохраняем альфа-канал
} elseif ( $mime == 'gif' ) {
// Определяем прозрачный цвет и передаем его в миниатюру
$transparent_color_original = imagecolorsforindex ( $image_original , $transparent_index_original ) ; $image_thumbnail ,
$transparent_color_original [ 'red' ] ,
$transparent_color_original [ 'green' ] ,
$transparent_color_original [ 'blue' ]
) ;
imagefill ( $image_thumbnail , 0
, 0
, $transparent_index_thumbnail ) ; }
}
// Вычисляем размер по ширине
$x_original_new = ( integer) ( $x_thumbnail * ( $y_original / $y_thumbnail ) ) ;
// Проверяем, не вышли ли за пределы изображения
if ( $x_original_new > $x_original ) {
// Вышли. Тогда вычисляем размер по высоте
$y_original_new = ( integer) ( $y_original * ( $x_original / $x_original_new ) ) ;
$x_original_new = $x_original ;
} else {
$y_original_new = $y_original ;
}
// Вычисляем срезы сторон
$x_indent = $x_original_new - $x_original ;
$y_indent = $y_original_new - $y_original ;
// Вычисляем смещение
$x_original_offset = ( $x_indent !== 0 ) ? - ( integer) ( $x_indent / 2 ) : 0 ;
$y_original_offset = ( $y_indent !== 0 ) ? - ( integer) ( $y_indent / 2 ) : 0 ;
echo <<<HTML
<!-- Отладка, вывод данных и миниатюры -->
<span style="display: inline-block; float: left; border: 1px solid #eee; margin: 5px; padding: 5px; background: #eee;">
Thumbnail: {$x_thumbnail} x {$y_thumbnail}<br />
Original: {$x_original} x {$y_original} Cropped: {$x_original_new} x {$y_original_new}<br />
Indent: {$x_indent} x {$y_indent} Offset: {$x_original_offset} x {$y_original_offset}<br />
<img src="/___/{$thumbnail_path}" />
</span>
HTML ;
// Копируем изображение в миниатюру
imagecopyresampled ( $image_thumbnail , $image_original , 0
, 0
, $x_original_offset , $y_original_offset , $x_thumbnail , $y_thumbnail , $x_original_new , $y_original_new ) ; // Сохраняем миниатюру
switch ( $mime ) {
case 'jpg' :
case 'jpe' :
case 'jpeg' :
$result = imagejpeg ( $image_thumbnail , $thumbnail_path , 100
) ; break ;
case 'png' :
$result = imagepng ( $image_thumbnail , $thumbnail_path ) ; break ;
case 'gif' :
$result = imagegif ( $image_thumbnail , $thumbnail_path ) ; break ;
case 'wbmp' :
$result = imagewbmp ( $image_thumbnail , $thumbnail_path ) ; break ;
}
// Очищаем память
}
return $result ;
}
Invert
Отправлено: 13 Декабря, 2013 - 14:14:01 • Тема: Скрипт генерации миниатюры с сохранением пропорции • Форум: Графика в PHP
Ответов: 2 Просмотров: 2361
Оставлю его здесь, а то с годами, возможно, потеряется.
Возможно кому-то будет полезен.
Скрипт создания миниатюр с центровкой и сохранением пропорции (отношением сторон).
Скриншот:
PHP:
скопировать код в буфер обмена
function create_image ( $filepath ) {
if ( $imagedata && isset ( $imagedata [ 'mime' ] ) ) { explode ( '/' , $imagedata [ 'mime' ] ) ) ;
} else {
$mime = 'jpeg' ;
}
case 'jpg' :
case 'jpe' :
case 'jpeg' :
case 'png' :
case 'gif' :
case 'wbmp' :
}
}
return FALSE ;
}
function create_preview_image ( $original_path , $thumbnail_path , $x_thumbnail , $y_thumbnail ) {
$result = FALSE ;
if ( is_file ( $original_path ) && $image_original = create_image
( $original_path ) ) { // Получаем размеры оригинала
$x_original = imagesx ( $image_original ) ; $y_original = imagesy ( $image_original ) ; // Создаем миниатюру
// Вычисляем размер по ширине
$x_original_new = ( integer) ( $x_thumbnail * ( $y_original / $y_thumbnail ) ) ;
// Проверяем, не вышли ли за пределы изображения
if ( $x_original_new > $x_original ) {
// Вышли. Тогда вычисляем размер по высоте
$y_original_new = ( integer) ( $y_original * ( $x_original / $x_original_new ) ) ;
$x_original_new = $x_original ;
} else {
$y_original_new = $y_original ;
}
// Вычисляем срезы сторон
$x_indent = $x_original_new - $x_original ;
$y_indent = $y_original_new - $y_original ;
// Вычисляем смещение
$x_original_offset = ( $x_indent !== 0 ) ? - ( integer) ( $x_indent / 2 ) : 0 ;
$y_original_offset = ( $y_indent !== 0 ) ? - ( integer) ( $y_indent / 2 ) : 0 ;
echo <<<HTML
<!-- Отладка, вывод данных и миниатюры -->
<span style="display: inline-block; float: left; border: 1px solid #eee; margin: 5px; padding: 5px;">
Thumbnail: {$x_thumbnail} x {$y_thumbnail}<br />
Original: {$x_original} x {$y_original} Cropped: {$x_original_new} x {$y_original_new}<br />
Indent: {$x_indent} x {$y_indent} Offset: {$x_original_offset} x {$y_original_offset}<br />
<img src="/___/{$thumbnail_path}" />
</span>
HTML ;
// Копируем изображение в миниатюру
imagecopyresampled ( $image_thumbnail , $image_original , 0
, 0
, $x_original_offset , $y_original_offset , $x_thumbnail , $y_thumbnail , $x_original_new , $y_original_new ) ;
if ( imagejpeg ( $image_thumbnail , $thumbnail_path , 100
) ) { $result = TRUE ;
}
}
return $result ;
}
PHP:
скопировать код в буфер обмена
$image_0 = '0.jpeg' ;
$thumb_0 = '_' . $image_0 ;
$x_0 = 420 ;
$y_0 = 146 ;
$x_1 = 220 ;
$y_1 = 146 ;
$x_2 = 146 ;
$y_2 = 146 ;
create_preview_image( $image_0 , 1 . $thumb_0 , $x_0 , $y_0 ) ;
create_preview_image( $image_0 , 3 . $thumb_0 , $x_1 , $y_1 ) ;
create_preview_image( $image_0 , 5 . $thumb_0 , $x_2 , $y_2 ) ;
create_preview_image( $image_0 , 4 . $thumb_0 , $y_1 , $x_1 ) ;
create_preview_image( $image_0 , 2 . $thumb_0 , $y_0 , $x_0 ) ;
Invert
Отправлено: 04 Сентября, 2011 - 04:31:41 • Тема: Преобразование десятичного чила • Форум: Хранение данных, их вывод и обработка
Ответов: 5 Просмотров: 2029
И в обратную сторону:
PHP:
скопировать код в буфер обмена
'0' => 1 , '1' => 2 , '2' => 3 , '3' => 4 , '4' => 5 , '5' => 6 , '6' => 7 , '7' => 8 , '8' => 9 , '9' => 10 , 'a' => 11 , 'b' => 12 , 'c' => 13 , 'd' => 14 , 'e' => 15 , 'f' => 16 , 'g' => 17 , 'h' => 18 , 'i' => 19 , 'j' => 20 , 'k' => 21 , 'l' => 22 , 'm' => 23 , 'n' => 24 , 'o' => 25 , 'p' => 26 , 'q' => 27 , 'r' => 28 , 's' => 29 , 't' => 30 , 'u' => 31 , 'v' => 32 , 'w' => 33 , 'x' => 34 , 'y' => 35 , 'z' => 36 , 'A' => 37 , 'B' => 38 , 'C' => 39 , 'D' => 40 , 'E' => 41 , 'F' => 42 , 'G' => 43 , 'H' => 44 , 'I' => 45 , 'J' => 46 , 'K' => 47 , 'L' => 48 , 'M' => 49 , 'N' => 50 , 'O' => 51 , 'P' => 52 , 'Q' => 53 , 'R' => 54 , 'S' => 55 , 'T' => 56 , 'U' => 57 , 'V' => 58 , 'W' => 59 , 'X' => 60 , 'Y' => 61 , 'Z' => 62 ) ;
$string = 'aB8' ;
$symbols_count = count ( $symbols ) ;
foreach ( $symbol_array as $exponent => $code ) {
$number = ( int ) ( $symbols [ $code ] ) ;
$result += $number * pow ( $symbols_count , $exponent ) ; }
echo $result ;
Invert
Отправлено: 03 Сентября, 2011 - 03:09:53 • Тема: Преобразование десятичного чила • Форум: Хранение данных, их вывод и обработка
Ответов: 5 Просмотров: 2029
Все, сделал.
Я еще никогда не наступал на такое кол-во граблей в настолько маленьком кусочке кода.
Протестировано на гигантских цифрах (10^15), можно использовать. Числа более 10^15 уже не обрабатываются, PHP "чихает".
Результат:
CODE (
htmlphp ):
скопировать код в буфер обмена
60 : X
61 : Y
62 : Z
63 : 00
64 : 01
65 : 02
...
3521681 : dL8i
3521682 : dL8j
3521683 : dL8k
...
3521614606208 : YYYYYYZ
3521614606209 : YYYYYZ0
3521614606210 : YYYYYZ1
...
1000000000000000 : 3yWxKD0Fv
1000000000000001 : 3yWxKD0Fw
1000000000000002 : 3yWxKD0Fx
Код:
PHP:
скопировать код в буфер обмена
$symbols = array ( 1 => '0' , '1' , '2' , '3' , '4' , '5' , '6' , '7' , '8' , '9' , 'a' , 'b' , 'c' , 'd' , 'e' , 'f' , 'g' , 'h' , 'i' , 'j' , 'k' , 'l' , 'm' , 'n' , 'o' , 'p' , 'q' , 'r' , 's' , 't' , 'u' , 'v' , 'w' , 'x' , 'y' , 'z' , 'A' , 'B' , 'C' , 'D' , 'E' , 'F' , 'G' , 'H' , 'I' , 'J' , 'K' , 'L' , 'M' , 'N' , 'O' , 'P' , 'Q' , 'R' , 'S' , 'T' , 'U' , 'V' , 'W' , 'X' , 'Y' , 'Z' ) ;
$symbols_count = count ( $symbols ) ;
for ( $i = 55 ; $i <= 88 ; $i ++ ) {
$number = $i ;
$result = '' ;
while ( $number > 0 ) {
$number = $number / $symbols_count ;
$integer = ( integer ) $number ;
$fraction = $number - $integer ;
$number = $integer ;
if ( $fraction !== 0 ) {
$code = ( string
) ( round ( $fraction * $symbols_count ) ) ;
} else {
$code = ( string ) $symbols_count ;
$number --;
}
$result .= $symbols [ $code ] ;
}
echo $i . ' : ' . $result . '<br>' ;
}
Invert
Отправлено: 01 Сентября, 2011 - 17:21:21 • Тема: Преобразование десятичного чила • Форум: Хранение данных, их вывод и обработка
Ответов: 5 Просмотров: 2029
Здравствуйте.
Не могли бы вы мне помочь в преобразовании десятичного числа?
Задача: Уменьшить кол-во знаков в числе используя символы для использования в строке УРЛ.
Ка пример преобразование DEC -> HEX, только в моем случае "цифр" не 16, а 62.
CODE (
htmlphp ):
скопировать код в буфер обмена
$symbols = array ( '0' , '1' , '2' , '3' , '4' , '5' , '6' , '7' , '8' , '9' , 'a' , 'b' , 'c' , 'd' , 'e' , 'f' , 'g' , 'h' , 'i' , 'j' , 'k' , 'l' , 'm' , 'n' , 'o' , 'p' , 'q' , 'r' , 's' , 't' , 'u' , 'v' , 'w' , 'x' , 'y' , 'z' , 'A' , 'B' , 'C' , 'D' , 'E' , 'F' , 'G' , 'H' , 'I' , 'J' , 'K' , 'L' , 'M' , 'N' , 'O' , 'P' , 'Q' , 'R' , 'S' , 'T' , 'U' , 'V' , 'W' , 'X' , 'Y' , 'Z' ) ;
Для сравнения, пятизначное число имеет кол-во комбинаций:
В десятичной - 10^5 = 100.000 с нулевым значением ( от 0 до 99.999 )
В хексе - 16^5 = 1.048.576
В нашей системе - 916.132.832
Как видите преимущество на лицо, только с реализацией уже запутался.
Могли бы вы помочь мне в решении задачи или скинуть ссылку на материал, способный мне помочь?
Invert
Отправлено: 26 Июня, 2011 - 13:46:09 • Тема: PHP • Форум: Прочее
Ответов: 21 Просмотров: 141
Мне кажется, что ТС должен сперва понять, для чего нужно PHP и какие задачи он решает.
Вторым нужно понять, с помощью каких инструментов и как именно это делается.
Потом: Ставите себе задачу - реализовать нечто. Строите схему или структуру этого скрипта, и создаете по блокам.
Все просто, никаких сверхмозгов не требуется. Нужно просто понять, что нужно сделать.
Страниц (15): В начало « ... 4 5 6 7 [8] 9 10 11 12 ... » В конец
Powered by ExBB FM 1.0 RC1. InvisionExBB