Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.76/50: Рейтинг темы: голосов - 50, средняя оценка - 4.76
2 / 2 / 1
Регистрация: 16.01.2011
Сообщений: 256
1

Обрезать изображения пропорционально до заданных размеров

29.06.2013, 15:20. Просмотров 9335. Ответов 15
Метки нет (Все метки)

Если изображение 1200 на 1000 к примеру, то сначала уменьшать по длине его допустим до 600, а потом обрезать с краёв, чтобы ширина была пропорциональна, существуют такие скрипты вообще?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.06.2013, 15:20
Ответы с готовыми решениями:

Увеличение размеров компонентов пропорционально увеличению размеров формы
подскажите как сделать чтобы при растягивании или при максимизации все компоненты на форме...

Прозрачность одноцветного изображения пропорционально силе цвета
Приветствую всех! Задача - сделать иконку с белым фоном и прозрачным изображением. Дело в том...

Определить отношение линейных размеров изображения в первом случае к размерам изображения во втором
Предмет располагается на двойном фокусном расстоянии от собирающей линзы. Линзу заменяют на...

Обрезать часть изображения в canvas
Хочу обрезать часть изображения в canvas, вопрос, можно-ли canvas присвоить background-image:...

15
Нет ТЗ - давай досвидания
744 / 375 / 64
Регистрация: 01.12.2011
Сообщений: 2,250
29.06.2013, 16:01 2
Чтоб было пропорционально, нужно изменять размер одной величины, а вторую оставить в auto. Обрезку можешь с эмулировать с помощью CSS overflow: hidden
0
2 / 2 / 1
Регистрация: 16.01.2011
Сообщений: 256
29.06.2013, 16:30  [ТС] 3
@BuPy7, хотелось бы чтобы в папке с изображениями лежали фотки одинакового размера, пропорциональны исходному
0
386 / 293 / 21
Регистрация: 07.08.2011
Сообщений: 790
Записей в блоге: 1
29.06.2013, 16:53 4
Держи скрипт:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
<?php
$w=256; // Ширина уменьшеного фото
$nh=256; // Высота уменьшеного фото
$size=500; // Максимальный вес фото в киллобайтах, если её размеры меньше 500*375. Например, если грузят анимацию gif размером 50*35, но весит она 1мб
$dir='../resources/tempAvatar/'; 
$tt='Ваше фото по размерам меньше '.$w.'*'.$nh.', но весит больше '.$size.' кб';
 
error_reporting (1);
$sd=strtolower($_FILES['ufile']['name']);
 
if ($_POST['act']=="upf" && $_FILES['ufile']['name']<>'' && (preg_match("/\.jpg$/",$sd) or preg_match("/\.png$/",$sd) or preg_match("/\.gif$/",$sd))) {
 
    $s=GetImageSize($_FILES['ufile']['tmp_name']) or exit;
    $na=substr(time(),3,9).substr(sprintf('%.3f',microtime()),2,4);
    $t=preg_replace('/(.*)(.{4})$/','\2',$sd);
 
    $sf=$_FILES['ufile']['size']/1024;
 
    if($s[0]<=$w && $s[1]<=$nh && $sf<$size){
        copy($_FILES['ufile']['tmp_name'], $dir.$na.$t);
        echo "resources/tempAvatar/$na$t";
 
        exit;
    }
    if($s[0]<=$w && $s[1]<=$nh && $sf>$size){
        echo "<script>alert('".$tt."');</script>";
        exit;
    }
 
    $sn=$_FILES['ufile']['tmp_name'];
 
    if(preg_match("/\.png$/",$sd)){
        $p=ImageCreateFromPNG($sn);
    }
    if(preg_match("/\.jpg$/",$sd)){
        $p=ImageCreateFromjpeg($sn);
    }
    if(preg_match("/\.gif$/",$sd)){
        $p=ImageCreateFromgif($sn);
    }
    $k=$s[0]/$w;
    $h=ceil($s[1]/$k);
    if($h>$nh){
        $kh=$h/$nh;
        $h=$nh;
        $w=ceil($w/$kh);
    }
    $d=ImageCreateTrueColor($w,$h);
    imageAlphaBlending($d,false);
    imageSaveAlpha($d,true);
    imagecopyresampled($d,$p,0,0,0,0,$w,$h,$s[0],$s[1]);
    imagejpeg($d,$dir.$na.'.jpg',100);
    imagedestroy($p);
    imagedestroy($d);
 
    echo "resources/tempAvatar/$na.jpg";
    exit;
}
else {exit;}
?>
0
2 / 2 / 1
Регистрация: 16.01.2011
Сообщений: 256
29.06.2013, 17:15  [ТС] 5
@KeyGen, Спасибо? Источник?

Добавлено через 5 минут
@KeyGen, Подскажите пожалуйста какие значения кроме тех, что сверху надо менять, тут ведь надо указывать и ширину и высоту, а я говорю о пропорциональности...

Добавлено через 5 минут
То есть если у юзера изображение 1200 на 700, я выставляю ширину 600, высоту 300, значит он сужает ширину до 600, соответственно высота получается 350, с обоих сторон он забирает по 25px и обрезает их, тем самым пропорции не меняются, картинка становится нужных размеров
0
386 / 293 / 21
Регистрация: 07.08.2011
Сообщений: 790
Записей в блоге: 1
29.06.2013, 17:20 6
Цитата Сообщение от epog333 Посмотреть сообщение
Спасибо? Источник?
Давно где-то нарыл. Подправил...
Если ширина не вкладывается пропорционально уменьшит по ширире аналогично по высоте...

Добавлено через 1 минуту

Не по теме:

Цитата Сообщение от epog333 Посмотреть сообщение
Спасибо?
И че я спосибо типо не заслужил? :) Хочешь на просторах нета еще поискать? :)

0
2 / 2 / 1
Регистрация: 16.01.2011
Сообщений: 256
29.06.2013, 17:36  [ТС] 7
@KeyGen, Я знак не тот поставил просто!
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
<?php
/**
 * @version 0.1
 * @author recens
 * @license GPL
 * @copyright Гельтищева Нина (http://recens.ru)
 */
 
/**
* Масштабирование изображения
*
* Функция работает с PNG, GIF и JPEG изображениями.
* Масштабирование возможно как с указаниями одной стороны, так и двух, в процентах или пикселях.
*
* @param string Расположение исходного файла
* @param string Расположение конечного файла
* @param integer Ширина конечного файла
* @param integer Высота конечного файла
* @param bool Размеры даны в пискелях или в процентах
* @return bool
*/
$file_input = $_FILES["filename"]["name"];
$file_output = "img/".$_FILES["filename"]["name"];
$w_o = "650";
function resize($file_input, $file_output, $w_o, $h_o, $percent = false) {
    list($w_i, $h_i, $type) = getimagesize($file_input);
    if (!$w_i || !$h_i) {
        echo 'Невозможно получить длину и ширину изображения';
        return;
    }
    $types = array('','gif','jpeg','png');
    $ext = $types[$type];
    if ($ext) {
        $func = 'imagecreatefrom'.$ext;
        $img = $func($file_input);
    } else {
        echo 'Некорректный формат файла';
        return;
    }
    if ($percent) {
        $w_o *= $w_i / 100;
        $h_o *= $h_i / 100;
    }
    if (!$h_o) $h_o = $w_o/($w_i/$h_i);
    if (!$w_o) $w_o = $h_o/($h_i/$w_i);
    $img_o = imagecreatetruecolor($w_o, $h_o);
    imagecopyresampled($img_o, $img, 0, 0, 0, 0, $w_o, $h_o, $w_i, $h_i);
    if ($type == 2) {
        return imagejpeg($img_o,$file_output,100);
    } else {
        $func = 'image'.$ext;
        return $func($img_o,$file_output);
    }
}
 
/**
* Обрезка изображения
*
* Функция работает с PNG, GIF и JPEG изображениями.
* Обрезка идёт как с указанием абсоютной длины, так и относительной (отрицательной).
*
* @param string Расположение исходного файла
* @param string Расположение конечного файла
* @param array Координаты обрезки
* @param bool Размеры даны в пискелях или в процентах
* @return bool
*/
function crop($file_input, $file_output, $crop = 'square',$percent = false) {
    list($w_i, $h_i, $type) = getimagesize($file_input);
    if (!$w_i || !$h_i) {
        echo 'Невозможно получить длину и ширину изображения';
        return;
    }
    $types = array('','gif','jpeg','png');
    $ext = $types[$type];
    if ($ext) {
        $func = 'imagecreatefrom'.$ext;
        $img = $func($file_input);
    } else {
        echo 'Некорректный формат файла';
        return;
    }
    if ($crop == 'square') {
        $min = $w_i;
        if ($w_i > $h_i) $min = $h_i;
        $w_o = $h_o = $min;
    } else {
        list($x_o, $y_o, $w_o, $h_o) = $crop;
        if ($percent) {
            $w_o *= $w_i / 100;
            $h_o *= $h_i / 100;
            $x_o *= $w_i / 100;
            $y_o *= $h_i / 100;
        }
        if ($w_o < 0) $w_o += $w_i;
        $w_o -= $x_o;
        if ($h_o < 0) $h_o += $h_i;
        $h_o -= $y_o;
    }
    $img_o = imagecreatetruecolor($w_o, $h_o);
    imagecopy($img_o, $img, 0, 0, $x_o, $y_o, $w_o, $h_o);
    if ($type == 2) {
        return imagejpeg($img_o,$file_output,100);
    } else {
        $func = 'image'.$ext;
        return $func($img_o,$file_output);
    }
}
 
 
 
 
 
?>
<?php
crop($file_input, $file_output);
?>
Нашёл вот такой вот скрипт, поставил, ошибка:
Warning: getimagesize(big.jpg) [function.getimagesize]: failed to open stream: No such file or directory in Z:\home\freights.ru\www\upload.php on line 160
Невозможно получить длину и ширину изображения
Помогите пожалуйста
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
16813 / 6692 / 879
Регистрация: 12.06.2012
Сообщений: 19,968
29.06.2013, 18:12 8

Не по теме:

Кликните здесь для просмотра всего текста
Цитата Сообщение от KeyGen Посмотреть сообщение
error_reporting (1);
1 - это только ошибки уровня E_ERROR. Если хотите вывод всех - то надо -1, а не 1
Цитата Сообщение от KeyGen Посмотреть сообщение
PHP
1
if ($_POST['act']=="upf"
при отсутствии значения будет ошибка, надо проверять с помощью isset/empty..
Цитата Сообщение от KeyGen Посмотреть сообщение
<>''
чувствуется паскаль в прошлом :)
Цитата Сообщение от KeyGen Посмотреть сообщение
PHP
1
(preg_match("/\.jpg$/",$sd) or preg_match("/\.png$/",$sd) or preg_match("/\.gif$/",$sd))
PHP
1
preg_match('/\.(jpe?g|png|gif)$/', $sd, $match)
и тогда вот эти проверки лишние
Цитата Сообщение от KeyGen Посмотреть сообщение
PHP
1
2
3
4
5
6
7
8
9
if(preg_match("/\.png$/",$sd)){
* * * * $p=ImageCreateFromPNG($sn);
* * }
* * if(preg_match("/\.jpg$/",$sd)){
* * * * $p=ImageCreateFromjpeg($sn);
* * }
* * if(preg_match("/\.gif$/",$sd)){
* * * * $p=ImageCreateFromgif($sn);
* * }
и их можно заменить на нечто такое
PHP
1
2
3
$type = $match[1] == 'jpg' ? 'jpeg' : $match[1];
$create = 'imagecreatefrom' . $type;
$p = $create($sn);
Цитата Сообщение от KeyGen Посмотреть сообщение
copy
для загрузки файлов есть move_uploded_file, она намного лучше
Цитата Сообщение от KeyGen Посмотреть сообщение
Alpha
для jpeg, к примеру, это бесполезно.. Имхо, лучше добавить проверку
ну и exit без вывода каких-либо сообщений не лучшая идея - как пользователь узнает, что не в порядке?


Цитата Сообщение от epog333 Посмотреть сообщение
PHP
1
$file_input = $_FILES["filename"]["name"]
в $_FILES[...]['name'] хранится путь к файлу на компьютере пользователя. Вы же не думаете, что вот так вот запросто вам дадут залезть в чужой комп? Тогда было бы просто засилье вирусов
0
2 / 2 / 1
Регистрация: 16.01.2011
Сообщений: 256
29.06.2013, 19:42  [ТС] 9
@KOPOJI, Всё сделал вот таким образом:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
<?php
$f="img/".$_FILES["filename"]["name"];
$src = imagecreatefromjpeg($f);
 
$w_src = imagesx($src); 
$h_src = imagesy($src);
$cropsss = $w_src / 650;
$shirinaaa = $h_src / $cropsss;
 
?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
<?php
/**
 * @version 0.1
 * @author recens
 * @license GPL
 * @copyright Гельтищева Нина (http://recens.ru)
 */
 
/**
* Масштабирование изображения
*
* Функция работает с PNG, GIF и JPEG изображениями.
* Масштабирование возможно как с указаниями одной стороны, так и двух, в процентах или пикселях.
*
* @param string Расположение исходного файла
* @param string Расположение конечного файла
* @param integer Ширина конечного файла
* @param integer Высота конечного файла
* @param bool Размеры даны в пискелях или в процентах
* @return bool
*/
$file_input = "img/".$_FILES["filename"]["name"];
$file_output = "img/".$_FILES["filename"]["name"];
function resize($file_input, $file_output, $w_o, $h_o, $percent = false) {
    list($w_i, $h_i, $type) = getimagesize($file_input);
    if (!$w_i || !$h_i) {
        echo 'Невозможно получить длину и ширину изображения';
        return;
    }
    $types = array('','gif','jpeg','png');
    $ext = $types[$type];
    if ($ext) {
        $func = 'imagecreatefrom'.$ext;
        $img = $func($file_input);
    } else {
        echo 'Некорректный формат файла';
        return;
    }
    if ($percent) {
        $w_o *= $w_i / 100;
        $h_o *= $h_i / 100;
    }
    if (!$h_o) $h_o = $w_o/($w_i/$h_i);
    if (!$w_o) $w_o = $h_o/($h_i/$w_i);
    $img_o = imagecreatetruecolor($w_o, $h_o);
    imagecopyresampled($img_o, $img, 0, 0, 0, 0, $w_o, $h_o, $w_i, $h_i);
    if ($type == 2) {
        return imagejpeg($img_o,$file_output,100);
    } else {
        $func = 'image'.$ext;
        return $func($img_o,$file_output);
    }
}
 
/**
* Обрезка изображения
*
* Функция работает с PNG, GIF и JPEG изображениями.
* Обрезка идёт как с указанием абсоютной длины, так и относительной (отрицательной).
*
* @param string Расположение исходного файла
* @param string Расположение конечного файла
* @param array Координаты обрезки
* @param bool Размеры даны в пискелях или в процентах
* @return bool
*/
function crop($file_input, $file_output, $crop = 'not',$percent = false) {
    list($w_i, $h_i, $type) = getimagesize($file_input);
    if (!$w_i || !$h_i) {
        echo 'Невозможно получить длину и ширину изображения';
        return;
    }
    $types = array('','gif','jpeg','png');
    $ext = $types[$type];
    if ($ext) {
        $func = 'imagecreatefrom'.$ext;
        $img = $func($file_input);
    } else {
        echo 'Некорректный формат файла';
        return;
    }
    if ($crop == 'square') {
        if ($w_i > $h_i) {
    $x_o = ($w_i - $h_i) / 2;
    $min = $h_i;
} else {
    $y_o = ($h_i - $w_i) / 2;
    $min = $w_i;
}
        $w_o = $h_o = $min;
    } else {
        list($x_o, $y_o, $w_o, $h_o) = $crop;
        if ($percent) {
            $w_o *= $w_i / 100;
            $h_o *= $h_i / 100;
            $x_o *= $w_i / 100;
            $y_o *= $h_i / 100;
        }
        if ($w_o < 0) $w_o += $w_i;
        $w_o -= $x_o;
        if ($h_o < 0) $h_o += $h_i;
        $h_o -= $y_o;
    }
 
}
 
 
 
 
 
?>
<?php
resize($file_input, $file_output, 650, $shirinaaa);
crop($file_input, $file_output);
$f="img/".$_FILES["filename"]["name"];
$src = imagecreatefromjpeg($f);
 
$w_src = imagesx($src); 
$h_src = imagesy($src);
 
 
echo '<br/>ширина - '.$w_src; 
echo '</br>';
echo 'высота - '. $h_src;
?>
0
386 / 293 / 21
Регистрация: 07.08.2011
Сообщений: 790
Записей в блоге: 1
29.06.2013, 21:09 10
Функция для пропорционального сжатия изображения для форматов png jpg gif (Писал сам, может есть замечания?):

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
/*
 * developer: KeyGen
 *
 * Функция для пропорционального сжатия файла.
 *
 * $size - размер нужного файла (допустим array(100,200) 100 - ширина, 200 - высота')
 * $pic - название картинки
 * $picOut - имя для полученной каринки (по умолчанию рандомное имя)
 * $path - путь к картинке (по умолчанию текущая директория)
 * $info - вывод информации
 * $expansion - формат который желаем получить ('same' = какой будет такой и получим, 'rand' = случайно или указать явно)
 * $encoding - кодировка используемая системой (по умолчанию UTF-8) доступные (ISO-8859-*, EUC-JP, UTF-8)
 *
 */
 
function editSizePicture($size, $pic, $picOut = 'rand', $path = __DIR__, $info = true, $expansion = 'same', $encoding = 'UTF-8'){
 
    if(!is_array($size) || count($size)!=2){
        if($info)
        echo 'Укажите размер массивом: array(100,200) 100 - ширина, 200 - высота';
        return false;
    }
 
    elseif(!$pic){
        if($info)
        echo 'Укажите имя файла!';
        return false;
    }
 
    if(!preg_match("/(\.jpg|\.png|\.gif)/ui",$pic)){
        if($info)
        echo 'Тип файла не поддерживается! (jpg,png,gif)';
        return false;
    }
 
    $infoPicture = getimagesize($path.'/'.$pic);
 
    if(!$infoPicture || $infoPicture == null){
        if($info)
        echo 'Ошибка получения данных файла!';
        return false;
    }
 
    $width  = $size[0];
    $height = $size[1];
 
    if($picOut == 'rand'){
        $nameOutFile = substr(time(),3,9).substr(sprintf('%.3f',microtime()),rand(2,4),rand(7,10));
    } else {
        $nameOutFile = str_replace(preg_replace('/(.*)(.{4})$/','\2', $pic),'',$pic);
    }
 
    if($infoPicture[0]<=$width && $infoPicture[1]<=$height){
        if($pic != $nameOutFile || $path != __DIR__){
            if(copy($path.'/'.$pic, $path.'/'.$nameOutFile)){
                if($info)
                echo 'Файл походит по размеру. Был скопирован.';
                return true;
            } else {
                if($info)
                echo 'Файл походит по размеру. Не был скопирован проверте права на папку!';
                return false;
            }
        } else {
            if($info)
            echo 'Файл походит по размеру. Не был скопирован имеет одинаковые имена с файлом оработки!';
            return false;
        }
    } else {
 
        if($expansion == 'same'){
            $expansion = mb_strtolower(str_replace('.','', preg_replace('/(.*)(.{4})$/','\2', $pic)),$encoding);
        }
        elseif($expansion == 'rand'){
            $expansionAr = array('png','jpg','gif');
            $expansion = $expansionAr[rand(0,count($expansionAr)-1)];
        }
 
        switch(mb_strtolower(str_replace('.','', preg_replace('/(.*)(.{4})$/','\2', $pic)),$encoding)){
            case 'jpg':
                $pictureEdit = ImageCreateFromjpeg($path.'/'.$pic);
                break;
            case 'png':
                $pictureEdit = ImageCreateFromPNG($path.'/'.$pic);
                break;
            case 'gif':
                $pictureEdit = ImageCreateFromgif($path.'/'.$pic);
                break;
        }
 
        $k = $infoPicture[0]/$width;
        $newHeight = ceil($infoPicture[1]/$k);
 
        if($newHeight>$height){
            $newHeightHeight=$newHeight/$height;
            $newHeight=$height;
            $width=ceil($width/$newHeightHeight);
        }
 
        $createPic = ImageCreateTrueColor( $width, $newHeight );
        imageAlphaBlending( $createPic, false );
        imageSaveAlpha( $createPic ,true );
        imagecopyresampled( $createPic ,$pictureEdit, 0,0,0,0, $width, $newHeight, $infoPicture[0], $infoPicture[1] );
 
        switch($expansion){
            case 'jpg':
                imagejpeg($createPic, $path.'/'.$nameOutFile.'.'.$expansion, 100);
                if($info)
                    echo 'Файл успешно обработан! Файл: '.$path.'/'.$nameOutFile.'.'.$expansion;
                break;
            case 'png':
                imagepng($createPic, $path.'/'.$nameOutFile.'.'.$expansion);
                if($info)
                    echo 'Файл успешно обработан! Файл: '.$path.'/'.$nameOutFile.'.'.$expansion;
                break;
            case 'gif':
                imagegif($createPic, $path.'/'.$nameOutFile.'.'.$expansion, 100);
                if($info)
                    echo 'Файл успешно обработан! Файл: '.$path.'/'.$nameOutFile.'.'.$expansion;
                break;
        }
 
        imagedestroy($pictureEdit);
        imagedestroy($createPic);
    }
 
    return true;
}
 
var_dump(editSizePicture(array(30,20000),'Untitled.gif'));
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
16813 / 6692 / 879
Регистрация: 12.06.2012
Сообщений: 19,968
29.06.2013, 21:46 11
Цитата Сообщение от KeyGen Посмотреть сообщение
может есть замечания?
ну раз вы просите, есть только парочка улучшений)))
Кликните здесь для просмотра всего текста

Не по теме:

имхо, с использованием ООП это можно покрасивее сделать :)


elseif в начале кода лишнее. Т.к. если выполнится условие выше - он выйдет из функции
Цитата Сообщение от KeyGen Посмотреть сообщение
\.jpg
а .jpeg - это уже картинка не того же типа, что и jpg ? И, кстати, зачем запоминать вместе с точкой?
Цитата Сообщение от KeyGen Посмотреть сообщение
PHP
1
2
3
4
5
6
$infoPicture = getimagesize($path.'/'.$pic);
if(!$infoPicture || $infoPicture == null){
* * * * if($info)
* * * * echo 'Ошибка получения данных файла!';
* * * * return false;
* * }
это можно чуть сократить, т.к. в php, по аналогии с "прародителем", операция присваивания также является выражением, ну и !NULL == !FALSE == TRUE, поэтому проверка на NULL лишняя
PHP
1
2
3
4
5
if( ! ($infoPicture = getimagesize($path.'/'.$pic)) ){
        if($info)
        echo 'Ошибка получения данных файла!';
        return false;
    }
Цитата Сообщение от KeyGen Посмотреть сообщение
PHP
1
substr(time(),3,9).substr(sprintf('%.3f',microtime()),rand(2,4),rand(7,10))
зачем такие ужасти? можно же просто date(), ну и при желании парочку rand (кстати, лучше mt_rand)
PHP
1
mt_rand(100, 999) . date('YmdHis') . mt_rand(100, 999);
Цитата Сообщение от KeyGen Посмотреть сообщение
PHP
1
if($pic != $nameOutFile
имхо, думаю, данная проверка излишняя, т.к. вероятность совпадения очень маленькая (особенно при использовании date, если не меняется часовой пояс)

Не по теме:

Цитата Сообщение от KeyGen Посмотреть сообщение
Файл походит по размеру
бедный размер, файлы по нему пошастали :D
сорри, не смог удержаться.. :sorry:


Цитата Сообщение от KeyGen Посмотреть сообщение
Не был скопирован имеет одинаковые имена с файлом оработки
а вот это уже пользователя не должно волновать Одинаковые имена - значит надо сделать новое имя.. Представьте, если бы файловый менеджер в вашей системе при копировании какой-то директории не предлагал вам заменить/переименовать и т.д., а просто выдавал ошибку и все. Ведь неудобно же было бы?
Цитата Сообщение от KeyGen Посмотреть сообщение
switch(
Зачем же свитч с проверкой, если выше вы уже проверяли тип файла (preg_match и т.д.) - надо было просто запомнить тип файла, а функцию создания можно генерировать динамически, составляя имя файла, благо php позволяет так "изгаляться".. Причем, вы еще и дважды проверяете - при открытии и при сохранении. А ведь можно было сделать проще, как я уже выше писал
Цитата Сообщение от KOPOJI Посмотреть сообщение
PHP
1
preg_match('/\.(jpe?g|png|gif)$/', $sd, $match)
Цитата Сообщение от KOPOJI Посмотреть сообщение
PHP
1
2
3
$type = $match[1] == 'jpg' ? 'jpeg' : $match[1];
$create = 'imagecreatefrom' . $type;
$p = $create($sn);
а при сохранении аналогично создать функцию. Т.к. тип может быть только jpeg, png или gif (т.к. выше, если другого формата - мы выходим из функции), то проверять функцию на существование не имеет смысла. Хотя, при желании можно и добавить проверку
PHP
1
2
if(!function_exists($create))
    return false;
при сохранении - создать аналогичную переменную с названием функции
PHP
1
2
$save = 'image' . $type;
$save(...);
ну и не стоит слепо полагаться на то, что imagejpeg и т.п. успешно обработают файл, им может не хватить прав и т.д., поэтому есть смысл проверять возвращаемое значение..
1
2 / 2 / 1
Регистрация: 16.01.2011
Сообщений: 256
29.06.2013, 22:18  [ТС] 12
@KOPOJI, Напишите про мой код комментарии пожалуйста, точнее не совсем про мой... Будет на хостинге пахать? Или может ругаться на некоторые файлы?
0
386 / 293 / 21
Регистрация: 07.08.2011
Сообщений: 790
Записей в блоге: 1
30.06.2013, 00:36 13
Коменты к улучшениям :
Кликните здесь для просмотра всего текста
Цитата Сообщение от KOPOJI Посмотреть сообщение
имхо, с использованием ООП это можно покрасивее сделать
Я согласен, но не всегда удобно. Допустим в вставить в цмс удобней функцию чем отдельный класс.
Цитата Сообщение от KOPOJI Посмотреть сообщение
а .jpeg - это уже картинка не того же типа, что и jpg ? И, кстати, зачем запоминать вместе с точкой?
Явно бок.
Цитата Сообщение от KOPOJI Посмотреть сообщение
зачем такие ужасти? можно же просто date(), ну и при желании парочку rand (кстати, лучше mt_rand)
Ок посмотю че за mt_rand
Цитата Сообщение от KOPOJI Посмотреть сообщение
имхо, думаю, данная проверка излишняя, т.к. вероятность совпадения очень маленькая (особенно при использовании date, если не меняется часовой пояс)
Можно указать имя....
Цитата Сообщение от KOPOJI Посмотреть сообщение
бедный размер, файлы по нему пошастали
Да проблемы с русским явно присутствуют
Цитата Сообщение от KOPOJI Посмотреть сообщение
а вот это уже пользователя не должно волновать Одинаковые имена - значит надо сделать новое имя.. Представьте, если бы файловый менеджер в вашей системе при копировании какой-то директории не предлагал вам заменить/переименовать и т.д., а просто выдавал ошибку и все. Ведь неудобно же было бы?
Ok
Цитата Сообщение от KOPOJI Посмотреть сообщение
Зачем же свитч с проверкой, если выше вы уже проверяли тип файла (preg_match и т.д.) - надо было просто запомнить тип файла, а функцию создания можно генерировать динамически, составляя имя файла, благо php позволяет так "изгаляться".. Причем, вы еще и дважды проверяете - при открытии и при сохранении. А ведь можно было сделать проще, как я уже выше писал
Ok
Цитата Сообщение от KOPOJI Посмотреть сообщение
ну и не стоит слепо полагаться на то, что imagejpeg и т.п. успешно обработают файл, им может не хватить прав и т.д., поэтому есть смысл проверять возвращаемое значение..
Ok

Спасибо за указания на ошибки, писал быстро. При использовании проблемы сразу отобразятся, а еще есть тестеры ... На работе постоянно жмут время уже входит в привычку. Надо бысто, а как - уже как получится. И опыта маловато 3~ месяца php занимаюсь

Добавлено через 6 минут
Цитата Сообщение от KeyGen Посмотреть сообщение
Ок посмотю че за mt_rand
и работает в 4 раза быстрее....
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
16813 / 6692 / 879
Регистрация: 12.06.2012
Сообщений: 19,968
30.06.2013, 00:41 14
Цитата Сообщение от epog333 Посмотреть сообщение
Будет на хостинге пахать?
навряд ли
Кликните здесь для просмотра всего текста
Цитата Сообщение от epog333 Посмотреть сообщение
$cropsss
......
$shirinaaa
прямо чувствуется крик души
Цитата Сообщение от epog333 Посмотреть сообщение
@param string Расположение исходного файла
а название переменной, где эта самая "@param string с расположением файла" - надо угадать?)) Да, здесь понятно, что они идут по порядку (наверное), но если это не так..?

Цитата Сообщение от epog333 Посмотреть сообщение
PHP
1
$file_input = "img/".$_FILES["filename"]["name"];
это путь в файловой системе пользователя. На локальном сервере они у вас, может быть, и совпадают, но "в реале" они различаются. Надо tmp_name, а не name.
Цитата Сообщение от epog333 Посмотреть сообщение
PHP
1
$ext = $types[$type];
лучше тогда сделать наоборот проверку
PHP
1
2
3
4
5
if(!isset($types[$ext]))
{
    echo 'Некорректный формат файла';
    return false;
}
тогда уберется лишняя вложенность, в функциях зачастую удобнее использовать проверку "от обратного"..
Цитата Сообщение от epog333 Посмотреть сообщение
imagecopyresampled
если тип файла png/gif, и у него есть прозрачный фон где-либо, то вы можете получить не то, что хотели - изображение с черным цветом на заднем плане, например, или полоски.
Цитата Сообщение от epog333 Посмотреть сообщение
@param string Расположение исходного файла
тоже самое - практически бесполезные комменты
Цитата Сообщение от epog333 Посмотреть сообщение
list($x_o, $y_o, $w_o, $h_o) = $crop
а в чем смысл сего деяния..? Не очень понятно, что этим пытаются добиться..

Не по теме:

Цитата Сообщение от KeyGen Посмотреть сообщение
Спасибо за указания на ошибки
это не ошибки, просто предположения улучшить код :)
по поводу ООП - я имел в виду сам код можно было бы сделать красивее и удобнее.. Здесь было нечто наподобие такого (под спойлером) https://www.cyberforum.ru/post4682278.html

0
2 / 2 / 1
Регистрация: 16.01.2011
Сообщений: 256
30.06.2013, 12:44  [ТС] 15
@KOPOJI, Изменил на tmp_name и вот:
Warning: imagecreatefromjpeg(img/4rfLMcoubeE.jpg) [function.imagecreatefromjpeg]: failed to open stream: No such file or directory in Z:\home\freights.ru\www\upload.php on line 10

Warning: imagesx(): supplied argument is not a valid Image resource in Z:\home\freights.ru\www\upload.php on line 12

Добавлено через 12 секунд
Как вообще быть то

Добавлено через 2 минуты
@KOPOJI, Сделал вот так:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
<?php
session_start();
$db = mysql_connect ("localhost","epog333","395267900");
        mysql_select_db ("fr8day",$db);
header('Content-type: text/html; charset=utf-8');
 
 
 
$f4=$_FILES["filename"]["tmp_name"];
$src4 = imagecreatefromjpeg($f4);
 
$w_src4 = imagesx($src4); 
;
if($w_src4 < 650 )
{
    echo "<b>Изображение меньше 650px в ширину</b>";
}
else
{
 
 
 
 
 
$file_extension = pathinfo($_FILES["filename"]["name"], PATHINFO_EXTENSION); 
    $valid_extensions = array('jpg', 'jpeg', 'JPG', 'JPEG'); 
    if(in_array($file_extension, $valid_extensions)) 
    { 
 
 
 
 
 
 
 
 
 
   if($_FILES["filename"]["size"] > 1024*1*1024)
   {
     echo ("Размер файла превышает один мегабайта");
     exit;
   }
   // Проверяем загружен ли файл
   if(is_uploaded_file($_FILES["filename"]["tmp_name"]))
   {
     // Если файл загружен успешно, перемещаем его
     // из временной директории в конечную
     move_uploaded_file($_FILES["filename"]["tmp_name"], "img/".$_FILES["filename"]["name"]);
     $path = $_FILES["filename"]["name"];
     $author = $_SESSION['login'];
     mysql_query("INSERT INTO img (img, author) VALUES ('$path','$author')");
     echo "<b>Файл загружен</b><br/>";
     echo "<img src='img/".$_FILES['filename']['name']."' />";
     echo "<br/><a href='/'>Главная страница</a>";
   } else {
      echo("Ошибка загрузки файла");
   }
}
else
{
    echo "Можно загружать только jpg, jpeg изображения!";
}
 
?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
<?php
$f=$_FILES["filename"]["name"];
$src = imagecreatefromjpeg($f);
 
$w_src = imagesx($src); 
$h_src = imagesy($src);
$cropsss = $w_src / 650;
$shirinaaa = $h_src / $cropsss;
 
?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
<?php
/**
 * @version 0.1
 * @author recens
 * @license GPL
 * @copyright Гельтищева Нина (http://recens.ru)
 */
 
/**
* Масштабирование изображения
*
* Функция работает с PNG, GIF и JPEG изображениями.
* Масштабирование возможно как с указаниями одной стороны, так и двух, в процентах или пикселях.
*
* @param string Расположение исходного файла
* @param string Расположение конечного файла
* @param integer Ширина конечного файла
* @param integer Высота конечного файла
* @param bool Размеры даны в пискелях или в процентах
* @return bool
*/
$file_input = "img/".$_FILES["filename"]["name"];
$file_output = "img/".$_FILES["filename"]["name"];
function resize($file_input, $file_output, $w_o, $h_o, $percent = false) {
    list($w_i, $h_i, $type) = getimagesize($file_input);
    if (!$w_i || !$h_i) {
        echo 'Невозможно получить длину и ширину изображения';
        return;
    }
    $types = array('','gif','jpeg','png');
    $ext = $types[$type];
    if ($ext) {
        $func = 'imagecreatefrom'.$ext;
        $img = $func($file_input);
    } else {
        echo 'Некорректный формат файла';
        return;
    }
    if ($percent) {
        $w_o *= $w_i / 100;
        $h_o *= $h_i / 100;
    }
    if (!$h_o) $h_o = $w_o/($w_i/$h_i);
    if (!$w_o) $w_o = $h_o/($h_i/$w_i);
    $img_o = imagecreatetruecolor($w_o, $h_o);
    imagecopyresampled($img_o, $img, 0, 0, 0, 0, $w_o, $h_o, $w_i, $h_i);
    if ($type == 2) {
        return imagejpeg($img_o,$file_output,100);
    } else {
        $func = 'image'.$ext;
        return $func($img_o,$file_output);
    }
}
 
/**
* Обрезка изображения
*
* Функция работает с PNG, GIF и JPEG изображениями.
* Обрезка идёт как с указанием абсоютной длины, так и относительной (отрицательной).
*
* @param string Расположение исходного файла
* @param string Расположение конечного файла
* @param array Координаты обрезки
* @param bool Размеры даны в пискелях или в процентах
* @return bool
*/
function crop($file_input, $file_output, $crop = 'not',$percent = false) {
    list($w_i, $h_i, $type) = getimagesize($file_input);
    if (!$w_i || !$h_i) {
        echo 'Невозможно получить длину и ширину изображения';
        return;
    }
    $types = array('','gif','jpeg','png');
    $ext = $types[$type];
    if ($ext) {
        $func = 'imagecreatefrom'.$ext;
        $img = $func($file_input);
    } else {
        echo 'Некорректный формат файла';
        return;
    }
    if ($crop == 'square') {
        if ($w_i > $h_i) {
    $x_o = ($w_i - $h_i) / 2;
    $min = $h_i;
} else {
    $y_o = ($h_i - $w_i) / 2;
    $min = $w_i;
}
        $w_o = $h_o = $min;
    } else {
        list($x_o, $y_o, $w_o, $h_o) = $crop;
        if ($percent) {
            $w_o *= $w_i / 100;
            $h_o *= $h_i / 100;
            $x_o *= $w_i / 100;
            $y_o *= $h_i / 100;
        }
        if ($w_o < 0) $w_o += $w_i;
        $w_o -= $x_o;
        if ($h_o < 0) $h_o += $h_i;
        $h_o -= $y_o;
    }
 
}
 
 
 
 
 
?>
<?php
resize($file_input, $file_output, 650, $shirinaaa);
crop($file_input, $file_output);
$f="img/".$_FILES["filename"]["name"];
$src = imagecreatefromjpeg($f);
 
$w_src = imagesx($src); 
$h_src = imagesy($src);
 
 
echo '<br/>ширина - '.$w_src; 
echo '</br>';
echo 'высота - '. $h_src;
}
?>
Так получше будет? Вроде всё кропается и сжимается как надо, но ошибки есть:
Warning: imagecreatefromjpeg(4rfLMcoubeE.jpg) [function.imagecreatefromjpeg]: failed to open stream: No such file or directory in Z:\home\freights.ru\www\upload.php on line 85

Warning: imagesx(): supplied argument is not a valid Image resource in Z:\home\freights.ru\www\upload.php on line 87

Warning: imagesy(): supplied argument is not a valid Image resource in Z:\home\freights.ru\www\upload.php on line 88

Warning: Division by zero in Z:\home\freights.ru\www\upload.php on line 90

Добавлено через 1 минуту
А всё, вот окончательно:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
<?php
session_start();
$db = mysql_connect ("localhost","epog333","395267900");
        mysql_select_db ("fr8day",$db);
header('Content-type: text/html; charset=utf-8');
 
 
 
$f4=$_FILES["filename"]["tmp_name"];
$src4 = imagecreatefromjpeg($f4);
 
$w_src4 = imagesx($src4); 
;
if($w_src4 < 650 )
{
    echo "<b>Изображение меньше 650px в ширину</b>";
}
else
{
 
 
 
 
 
$file_extension = pathinfo($_FILES["filename"]["name"], PATHINFO_EXTENSION); 
    $valid_extensions = array('jpg', 'jpeg', 'JPG', 'JPEG'); 
    if(in_array($file_extension, $valid_extensions)) 
    { 
 
 
 
 
 
 
 
 
 
   if($_FILES["filename"]["size"] > 1024*1*1024)
   {
     echo ("Размер файла превышает один мегабайта");
     exit;
   }
   // Проверяем загружен ли файл
   if(is_uploaded_file($_FILES["filename"]["tmp_name"]))
   {
     // Если файл загружен успешно, перемещаем его
     // из временной директории в конечную
     move_uploaded_file($_FILES["filename"]["tmp_name"], "img/".$_FILES["filename"]["name"]);
     $path = $_FILES["filename"]["name"];
     $author = $_SESSION['login'];
     mysql_query("INSERT INTO img (img, author) VALUES ('$path','$author')");
     echo "<b>Файл загружен</b><br/>";
     echo "<img src='img/".$_FILES['filename']['name']."' />";
     echo "<br/><a href='/'>Главная страница</a>";
   } else {
      echo("Ошибка загрузки файла");
   }
}
else
{
    echo "Можно загружать только jpg, jpeg изображения!";
}
 
?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
<?php
$f="img/".$_FILES["filename"]["name"];
$src = imagecreatefromjpeg($f);
 
$w_src = imagesx($src); 
$h_src = imagesy($src);
$cropsss = $w_src / 650;
$shirinaaa = $h_src / $cropsss;
 
?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
<?php
/**
 * @version 0.1
 * @author recens
 * @license GPL
 * @copyright Гельтищева Нина (http://recens.ru)
 */
 
/**
* Масштабирование изображения
*
* Функция работает с PNG, GIF и JPEG изображениями.
* Масштабирование возможно как с указаниями одной стороны, так и двух, в процентах или пикселях.
*
* @param string Расположение исходного файла
* @param string Расположение конечного файла
* @param integer Ширина конечного файла
* @param integer Высота конечного файла
* @param bool Размеры даны в пискелях или в процентах
* @return bool
*/
$file_input = "img/".$_FILES["filename"]["name"];
$file_output = "img/".$_FILES["filename"]["name"];
function resize($file_input, $file_output, $w_o, $h_o, $percent = false) {
    list($w_i, $h_i, $type) = getimagesize($file_input);
    if (!$w_i || !$h_i) {
        echo 'Невозможно получить длину и ширину изображения';
        return;
    }
    $types = array('','gif','jpeg','png');
    $ext = $types[$type];
    if ($ext) {
        $func = 'imagecreatefrom'.$ext;
        $img = $func($file_input);
    } else {
        echo 'Некорректный формат файла';
        return;
    }
    if ($percent) {
        $w_o *= $w_i / 100;
        $h_o *= $h_i / 100;
    }
    if (!$h_o) $h_o = $w_o/($w_i/$h_i);
    if (!$w_o) $w_o = $h_o/($h_i/$w_i);
    $img_o = imagecreatetruecolor($w_o, $h_o);
    imagecopyresampled($img_o, $img, 0, 0, 0, 0, $w_o, $h_o, $w_i, $h_i);
    if ($type == 2) {
        return imagejpeg($img_o,$file_output,100);
    } else {
        $func = 'image'.$ext;
        return $func($img_o,$file_output);
    }
}
 
/**
* Обрезка изображения
*
* Функция работает с PNG, GIF и JPEG изображениями.
* Обрезка идёт как с указанием абсоютной длины, так и относительной (отрицательной).
*
* @param string Расположение исходного файла
* @param string Расположение конечного файла
* @param array Координаты обрезки
* @param bool Размеры даны в пискелях или в процентах
* @return bool
*/
function crop($file_input, $file_output, $crop = 'not',$percent = false) {
    list($w_i, $h_i, $type) = getimagesize($file_input);
    if (!$w_i || !$h_i) {
        echo 'Невозможно получить длину и ширину изображения';
        return;
    }
    $types = array('','gif','jpeg','png');
    $ext = $types[$type];
    if ($ext) {
        $func = 'imagecreatefrom'.$ext;
        $img = $func($file_input);
    } else {
        echo 'Некорректный формат файла';
        return;
    }
    if ($crop == 'square') {
        if ($w_i > $h_i) {
    $x_o = ($w_i - $h_i) / 2;
    $min = $h_i;
} else {
    $y_o = ($h_i - $w_i) / 2;
    $min = $w_i;
}
        $w_o = $h_o = $min;
    } else {
        list($x_o, $y_o, $w_o, $h_o) = $crop;
        if ($percent) {
            $w_o *= $w_i / 100;
            $h_o *= $h_i / 100;
            $x_o *= $w_i / 100;
            $y_o *= $h_i / 100;
        }
        if ($w_o < 0) $w_o += $w_i;
        $w_o -= $x_o;
        if ($h_o < 0) $h_o += $h_i;
        $h_o -= $y_o;
    }
 
}
 
 
 
 
 
?>
<?php
resize($file_input, $file_output, 650, $shirinaaa);
crop($file_input, $file_output);
$f="img/".$_FILES["filename"]["name"];
$src = imagecreatefromjpeg($f);
 
$w_src = imagesx($src); 
$h_src = imagesy($src);
 
 
echo '<br/>ширина - '.$w_src; 
echo '</br>';
echo 'высота - '. $h_src;
}
?>
Ошибок нет и вроде всё работает как надо, или на хостинге тоже не будет пахать?
0
KOPOJI
30.06.2013, 20:40     Обрезать изображения пропорционально до заданных размеров
  #16

Не по теме:

Цитата Сообщение от epog333 Посмотреть сообщение
или на хостинге тоже не будет пахать?
вопрос на засыпку.. А проверить? Благо бесплатных хостингов хватает :)

0
30.06.2013, 20:40
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.06.2013, 20:40
Привет! Вот еще темы с ответами:

Нужно у изображения обрезать углы по радиусу
Где тут уже на форуме было, не могу найти. Короче на задний фон виджета рисуется картинка, но она...

Как обрезать изображения в CSS без нарушения пропорций?
Товарищи! Есть Div. В нем есть картинка произвольного размера (горизонтальная или вертикальная)....

Вывод таблицы деления заданных размеров
Почему столько внимания уделяется таблице умножения? Других арифметических операций не бывает, что...

Сделать таблицу заданных размеров (N*M), заполненную числами от 1 до N*M
Здравствуйте!Ребят, вообще не понимаю, как написать программу на JavaScript , которая возвращает...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.