Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Обработка изображений перед загрузкой (https://javascript.ru/forum/misc/30330-obrabotka-izobrazhenijj-pered-zagruzkojj.html)

KupueIIIKo 31.07.2012 23:03

Народ у меня JS проверяет, если браузер старый, то посылает обновляться!
Суть в том, чтобы оптимизировать изображение на стороне клиента, перед загрузкой на сервак!
Желательно готовая библиотека...

vadim5june 31.07.2012 23:05

Цитата:

Сообщение от Magneto (Сообщение 193404)
Firefox >= 3.6
Safari >= 6.0
Chrome >= 7.0
Opera >= 11.1
IE - не поддерживает

Источник - Веб-приложения на JavaScript. Алекс Маккоу

да это я спутал с File System API

Deff 31.07.2012 23:05

Цитата:

Сообщение от KupueIIIKo
Народ у меня JS проверяет, если браузер старый, то посылает обновляться!

Гы - кароче - посылает

melky 31.07.2012 23:39

Цитата:

Сообщение от Deff (Сообщение 193405)
melky, Я загружаю 200кил канвы - этап загрузки - полминуты (и это еще никакой обработки

прошу демо? я пока что только читаю про это )

KupueIIIKo 01.08.2012 00:19

:D У кого вообще получилось загнать изображение пользователя в canvas?
У меня винда 7-ка вообще даже size не дает!

KupueIIIKo 01.08.2012 11:23

:D Пишу оптимизатор) Все вгрузил в canvas вообщем 1 часть кода отрабатывается на 100%) А вот с оптимизацией пока наоборот) Из файла в 5 метров получается файл в 27 метров)

vadim5june 01.08.2012 12:09

Цитата:

Сообщение от KupueIIIKo
Пишу оптимизатор)

а что он должен делать с картинкой
там картинка получается в формате dataURL в несколько раз больше чем двоичный файл

KupueIIIKo 01.08.2012 12:42

:D Гружу 5 метров изображения в canvas 100 метров оперативы как и не было))))))))))
И так теперь мой скрипт уменьшает изображение до 1024*768, получаю на выходе изображение уже не 5 метров а 1 метр с копейками)))

melky 01.08.2012 12:43

Цитата:

Сообщение от KupueIIIKo (Сообщение 193589)
:D Гружу 5 метров изображения в canvas 100 метров оперативы как и не было))))))))))
И так теперь мой скрипт уменьшает изображение до 1024*768, получаю на выходе изображение уже не 5 метров а 1 метр с копейками)))

так Вы покажете скрипт на jsbin'е, или нет ?))

KupueIIIKo 01.08.2012 12:59

Цитата:

Сообщение от melky (Сообщение 193591)
так Вы покажете скрипт на jsbin'е, или нет ?))

Как я делал) про JSbin нечего не слышал) линку в студию)

<!DOCTYPE html> 
<html>
<head>
<noscript>
<meta http-equiv="refresh" content="0; url=nojs.html">
</noscript>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" content="no-cache">
<link rel="stylesheet" type="text/css" href="css/style.css">
</head>
<body>
<style>
  .thumb {
    height: 75px;
    border: 1px solid #000;
    margin: 10px 5px 0 0;
  }
</style>

<input type="file" id="files" name="files[]" multiple />
<output id="list"></output>

<script>
function handleFileSelect(evt) {

	var files = evt.target.files; //Файллист

	for (var i = 0, f; f = files[i]; i++) {

		if (!f.type.match('image.*')) {
			continue;
		}

	var reader = new FileReader();

	reader.onload = (function(theFile) {
		return function(e) {
			
			var canvas = document.createElement("canvas");
			var ctx = canvas.getContext("2d");
			var image = new Image();
			image.src = e.target.result;
			image.onload = function(e)
				{
var MAX_WIDTH = 1024;
var MAX_HEIGHT = 768;
var width = image.width;
var height = image.height;
  
if (width > height) {
  if (width > MAX_WIDTH) {
    height *= MAX_WIDTH / width;
    width = MAX_WIDTH;
  }
} else {
  if (height > MAX_HEIGHT) {
    width *= MAX_HEIGHT / height;
    height = MAX_HEIGHT;
  }
}
					canvas.width = width;
					canvas.height = height;
					ctx.drawImage(image, 0, 0, width, height);
				}
				
																	//

																	//
			document.getElementById("canvasiha").appendChild(canvas);
			dat=image.toDataURL("image/jpeg"); typ='jpeg';
			window.open(dat=imgage.toDataURL());
		};
	})(f);

	reader.readAsDataURL(f);
	}
}

document.getElementById('files').addEventListener('change', handleFileSelect, false);
</script>
<div id="canvasiha">
</body>
</html>


Часовой пояс GMT +3, время: 03:07.