Форум программистов, компьютерный форум, киберфорум
jQuery
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/47: Рейтинг темы: голосов - 47, средняя оценка - 4.62
2 / 2 / 0
Регистрация: 12.03.2012
Сообщений: 33

Уменьшение веса загружаемого фото на стороне клиента

19.05.2013, 10:53. Показов 8982. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
с помощью uploadifier загружаю фотографию. как сделать так, чтобы при загрузке больших изображений (например, с весом больше 2мб) оно загружалось на сервер с весом вдвое меньше, чем вес исходного загружаемого изображения?

иначе говоря, есть ли какая-нибудь jquery-утилита для уменьшения веса загружаемого изображения? (т.е. уменьшить вес на стороне клиента и потом загружать на сервер изображение с уже уменьшенным весом).
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
19.05.2013, 10:53
Ответы с готовыми решениями:

Уменьшение веса дэйкстры
Нужно сделать так, чтобы программа не превышала 64mb, даже если есть 100000 вершин и рёбер. #include<bits/stdc++.h> using...

Уменьшение объема (веса) репозитория
Всем привет, столкнулся с такой проблемой, что репозиторий разросся до не малых размеров (1гб), при этом на хостинге где размещен сайт,...

Уменьшение веса установленного приложения (не APK!)
Здравствуйте! Apk моей игры весит ~16мб, однако после установки игра занимает на телефоне 110мб (~80 если использовать только внутреннюю...

14
странник
 Аватар для Donald28
810 / 481 / 108
Регистрация: 28.05.2012
Сообщений: 1,518
Записей в блоге: 2
19.05.2013, 12:35
насколько мне известно, JS с файлами на стороне клиента не может работать, иначе это будет нарушение безопасности.

Такую утилиту можно реализовать при загрузке на сервер, дальнейшая обработка загруженного фото с помощью php и сохранение на сервере, только облегченное фото.
0
2 / 2 / 0
Регистрация: 12.03.2012
Сообщений: 33
19.05.2013, 12:41  [ТС]
жаль, конечно, что так нельзя... а так спасибо, Donald28.
0
Не мoдepaтор
 Аватар для MVS76
340 / 315 / 94
Регистрация: 07.07.2012
Сообщений: 1,040
Записей в блоге: 7
19.05.2013, 17:22
Попробуйте прикрутить на сервере обработчик картинок, ну например POST запросом, есть хороший class "classSimpleImage.php" сжимает размер картинки довольно неплохо.
Пример:
сам class
Кликните здесь для просмотра всего текста
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
<?php
class SimpleImage {
var $image;
var $image_type;
function load($filename) {
$image_info = getimagesize($filename);
$this->image_type = $image_info[2];
if( $this->image_type == IMAGETYPE_JPEG ) {
$this->image = imagecreatefromjpeg($filename);
} elseif( $this->image_type == IMAGETYPE_GIF ) {
$this->image = imagecreatefromgif($filename);
} elseif( $this->image_type == IMAGETYPE_PNG ) {
$this->image = imagecreatefrompng($filename);
}
}
function save($filename, $image_type=IMAGETYPE_JPEG, $compression=40, $permissions=null) {
if( $image_type == IMAGETYPE_JPEG ) {
imagejpeg($this->image,$filename,$compression);
} elseif( $image_type == IMAGETYPE_GIF ) {
imagegif($this->image,$filename);
} elseif( $image_type == IMAGETYPE_PNG ) {
imagepng($this->image,$filename);
}
if( $permissions != null) {
chmod($filename,$permissions);
}
}
function output($image_type=IMAGETYPE_JPEG) {
if( $image_type == IMAGETYPE_JPEG ) {
imagejpeg($this->image);
} elseif( $image_type == IMAGETYPE_GIF ) {
imagegif($this->image);
} elseif( $image_type == IMAGETYPE_PNG ) {
imagepng($this->image);
}
}
function getWidth() {
return imagesx($this->image);
}
function getHeight() {
return imagesy($this->image);
}
function resizeToHeight($height) {
$ratio = $height / $this->getHeight();
$width = $this->getWidth() * $ratio;
$this->resize($width,$height);
}
function resizeToWidth($width) {
$ratio = $width / $this->getWidth();
$height = $this->getheight() * $ratio;
$this->resize($width,$height);
}
function scale($scale) {
$width = $this->getWidth() * $scale/100;
$height = $this->getheight() * $scale/100;
$this->resize($width,$height);
}
function resize($width,$height) {
$new_image = imagecreatetruecolor($width, $height);
imagecopyresampled($new_image, $this->image, 0, 0, 0, 0, $width, $height, $this->getWidth(), $this->getHeight());
$this->image = $new_image;
}
}
?>

Пример использования:
PHP
1
2
3
4
5
6
<php 
$image = new SimpleImage();
$image->load('../URL/1.jpg'); // исходная картинка
$image->scale(99.9);
$image->save('../путь сохранения/1.jpg'); // сжатая картинка
?>
0
2 / 2 / 0
Регистрация: 12.03.2012
Сообщений: 33
19.05.2013, 17:31  [ТС]
Цитата Сообщение от MVS76 Посмотреть сообщение
Попробуйте прикрутить на сервере обработчик картинок, ну например POST запросом, есть хороший class "classSimpleImage.php" сжимает размер картинки довольно неплохо.
Пример:
сам class
Кликните здесь для просмотра всего текста
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
<?php
class SimpleImage {
var $image;
var $image_type;
function load($filename) {
$image_info = getimagesize($filename);
$this->image_type = $image_info[2];
if( $this->image_type == IMAGETYPE_JPEG ) {
$this->image = imagecreatefromjpeg($filename);
} elseif( $this->image_type == IMAGETYPE_GIF ) {
$this->image = imagecreatefromgif($filename);
} elseif( $this->image_type == IMAGETYPE_PNG ) {
$this->image = imagecreatefrompng($filename);
}
}
function save($filename, $image_type=IMAGETYPE_JPEG, $compression=40, $permissions=null) {
if( $image_type == IMAGETYPE_JPEG ) {
imagejpeg($this->image,$filename,$compression);
} elseif( $image_type == IMAGETYPE_GIF ) {
imagegif($this->image,$filename);
} elseif( $image_type == IMAGETYPE_PNG ) {
imagepng($this->image,$filename);
}
if( $permissions != null) {
chmod($filename,$permissions);
}
}
function output($image_type=IMAGETYPE_JPEG) {
if( $image_type == IMAGETYPE_JPEG ) {
imagejpeg($this->image);
} elseif( $image_type == IMAGETYPE_GIF ) {
imagegif($this->image);
} elseif( $image_type == IMAGETYPE_PNG ) {
imagepng($this->image);
}
}
function getWidth() {
return imagesx($this->image);
}
function getHeight() {
return imagesy($this->image);
}
function resizeToHeight($height) {
$ratio = $height / $this->getHeight();
$width = $this->getWidth() * $ratio;
$this->resize($width,$height);
}
function resizeToWidth($width) {
$ratio = $width / $this->getWidth();
$height = $this->getheight() * $ratio;
$this->resize($width,$height);
}
function scale($scale) {
$width = $this->getWidth() * $scale/100;
$height = $this->getheight() * $scale/100;
$this->resize($width,$height);
}
function resize($width,$height) {
$new_image = imagecreatetruecolor($width, $height);
imagecopyresampled($new_image, $this->image, 0, 0, 0, 0, $width, $height, $this->getWidth(), $this->getHeight());
$this->image = $new_image;
}
}
?>

Пример использования:
PHP
1
2
3
4
5
6
<php 
$image = new SimpleImage();
$image->load('../URL/1.jpg'); // исходная картинка
$image->scale(99.9);
$image->save('../путь сохранения/1.jpg'); // сжатая картинка
?>
это, конечно, хорошо, но я б хотел, чтоб сжатие происходило именно ДО загрузки изображения на сервер... (дабы долго не аплоадить)
0
Не мoдepaтор
 Аватар для MVS76
340 / 315 / 94
Регистрация: 07.07.2012
Сообщений: 1,040
Записей в блоге: 7
19.05.2013, 17:43
Сжатие происходит ну очень быстро, за пару секунд, процесс по времени не увеличится заметно
0
странник
 Аватар для Donald28
810 / 481 / 108
Регистрация: 28.05.2012
Сообщений: 1,518
Записей в блоге: 2
19.05.2013, 17:45
MVS76, для того чтобы произошло сжатие изображения - надо еще это изображение загрузить на сервер!!!!
А вот это уже зависит от скорости приема сервера и скорости интернета у пользователя!!!!
0
Не мoдepaтор
 Аватар для MVS76
340 / 315 / 94
Регистрация: 07.07.2012
Сообщений: 1,040
Записей в блоге: 7
19.05.2013, 17:59
До загрузки передавайте его методом post сразу на php, примерно так:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
<php 
$img = $_POST['url'];
// здесь извлекаем имя картинки, чтоб сохранить с тем-же именем
preg_match_all('~путь/(\\d+)\\.jpg~i', $img, $result);
$results= $result[1];
rsort($results, SORT_NUMERIC); 
// сжатие
$image = new SimpleImage();
$image->load('./'.$results[0].'.jpg'); // исходная картинка
$image->scale(99.9);
$image->save('./'.$results[0].'.jpg'); // сжатая картинка
?>
Это набросок мыслей, у меня так парсер работает, довольно таки успешно
0
странник
 Аватар для Donald28
810 / 481 / 108
Регистрация: 28.05.2012
Сообщений: 1,518
Записей в блоге: 2
19.05.2013, 18:11
MVS76, что за ересь????
PHP
1
$img = $_POST['url'];
предусматривает, что изображение уже находится на сервере!!!!!

А если пользователь хочет загрузить свое фото, которое находится на компе?
Цитата Сообщение от MVS76 Посмотреть сообщение
передавайте его методом post сразу на php
это и значит загрузить на сервер!!!!
0
Не мoдepaтор
 Аватар для MVS76
340 / 315 / 94
Регистрация: 07.07.2012
Сообщений: 1,040
Записей в блоге: 7
19.05.2013, 18:14
Это ведь не готовый код, я не говорил даже что он рабочий
Цитата Сообщение от MVS76 Посмотреть сообщение
Это набросок мыслей
Я ведь написал, просто стоит подумать, и решение само придет - если результат сильно нужен.
0
странник
 Аватар для Donald28
810 / 481 / 108
Регистрация: 28.05.2012
Сообщений: 1,518
Записей в блоге: 2
19.05.2013, 18:19
MVS76, да какой набросок решений????

нельзя до загрузки на сервер у изображений, которые находится на компьютере, уменьшить объем или изменить их содержимое!!!

Но даже если предположить что такое возможно, то это будет серьезная брешь в безопасности. Так будет возможность удаленно менять содержимое практически любых файлов на чужом компьютере.

Не по теме:

И в этом случае "касперский", который вы рекламируете в своей подписи, вам уже не поможет!!!!

0
2 / 2 / 0
Регистрация: 12.03.2012
Сообщений: 33
19.05.2013, 18:21  [ТС]
уважаемы, MVS76. мне очень приятно, что Вы стараетесь мне помочь, но мне кажется, что Вы не совсем правильно поянли мою проблему...

а именно: я хочу, чтобы изображение (потенциально большого размера) загружалось на сервер не с тем весом, что он фактически имеет, а с уже уменьшенным... т.е. хочу, чтобы уменьшение веса происходило до загрузки на сервер...
а Вы, как мне кажется, так поняли, что моей задачей является получение изображения с уменьшенным весом вообще...
0
Не мoдepaтор
 Аватар для MVS76
340 / 315 / 94
Регистрация: 07.07.2012
Сообщений: 1,040
Записей в блоге: 7
19.05.2013, 18:27
Согласен, действительно не так понял, вот теперь вы дали более обширный ответ.
Да, до загрузки на сервер уменьшить не получится, но загрузить а потом уменьшить - возможно, что является сохранением свободного места на сервере.
0
2 / 2 / 0
Регистрация: 12.03.2012
Сообщений: 33
19.05.2013, 18:48  [ТС]
всем спасибо!
0
2 / 2 / 0
Регистрация: 12.03.2012
Сообщений: 33
25.05.2013, 14:20  [ТС]
Цитата Сообщение от MVS76 Посмотреть сообщение
Попробуйте прикрутить на сервере обработчик картинок, ну например POST запросом, есть хороший class "classSimpleImage.php" сжимает размер картинки довольно неплохо.
Пример:
сам class
Кликните здесь для просмотра всего текста
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
<?php
class SimpleImage {
var $image;
var $image_type;
function load($filename) {
$image_info = getimagesize($filename);
$this->image_type = $image_info[2];
if( $this->image_type == IMAGETYPE_JPEG ) {
$this->image = imagecreatefromjpeg($filename);
} elseif( $this->image_type == IMAGETYPE_GIF ) {
$this->image = imagecreatefromgif($filename);
} elseif( $this->image_type == IMAGETYPE_PNG ) {
$this->image = imagecreatefrompng($filename);
}
}
function save($filename, $image_type=IMAGETYPE_JPEG, $compression=40, $permissions=null) {
if( $image_type == IMAGETYPE_JPEG ) {
imagejpeg($this->image,$filename,$compression);
} elseif( $image_type == IMAGETYPE_GIF ) {
imagegif($this->image,$filename);
} elseif( $image_type == IMAGETYPE_PNG ) {
imagepng($this->image,$filename);
}
if( $permissions != null) {
chmod($filename,$permissions);
}
}
function output($image_type=IMAGETYPE_JPEG) {
if( $image_type == IMAGETYPE_JPEG ) {
imagejpeg($this->image);
} elseif( $image_type == IMAGETYPE_GIF ) {
imagegif($this->image);
} elseif( $image_type == IMAGETYPE_PNG ) {
imagepng($this->image);
}
}
function getWidth() {
return imagesx($this->image);
}
function getHeight() {
return imagesy($this->image);
}
function resizeToHeight($height) {
$ratio = $height / $this->getHeight();
$width = $this->getWidth() * $ratio;
$this->resize($width,$height);
}
function resizeToWidth($width) {
$ratio = $width / $this->getWidth();
$height = $this->getheight() * $ratio;
$this->resize($width,$height);
}
function scale($scale) {
$width = $this->getWidth() * $scale/100;
$height = $this->getheight() * $scale/100;
$this->resize($width,$height);
}
function resize($width,$height) {
$new_image = imagecreatetruecolor($width, $height);
imagecopyresampled($new_image, $this->image, 0, 0, 0, 0, $width, $height, $this->getWidth(), $this->getHeight());
$this->image = $new_image;
}
}
?>

Пример использования:
PHP
1
2
3
4
5
6
<php 
$image = new SimpleImage();
$image->load('../URL/1.jpg'); // исходная картинка
$image->scale(99.9);
$image->save('../путь сохранения/1.jpg'); // сжатая картинка
?>
Ваш класс пригодился. спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
25.05.2013, 14:20
Помогаю со студенческими работами здесь

Уменьшение веса картинки при загрузке на сервер
Всем привет . При создании новости на сайте , делается уменьшенное изображение , но ВЕС изображения не меняется , меняется только размер...

Валидация на стороне клиента
Ребята, здравствуйте! Произвожу валидцию на стороне клиента. Нашел в интернете код: jQuery.fn.ForceNumericOnly = function() { ...

Парсинг на стороне клиента
Возможно ли спарсить значение на странице на стороне клиента (к примеру через JS)?? просто фишка в том, что к примеру на социалках до и...

Валидация на стороне клиента
Подскажите, пожалуйста, как правильно оформить валидацию на стороне клиента. У меня есть суммарная валидация (validation...

3d графика на стороне клиента
Здравствуйте. Я новичок в клиент-серверных технологиях, поэтому прошу совета, какие технологии мне стоит использовать для написания...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение Это мой обзор планшета X220 с точки зрения школьника. Недавно я решила попытаться уменьшить свой. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru