Показать сообщение отдельно
  #3 (permalink)  
Старый 22.09.2012, 03:40
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,585

Сообщение от Marv Посмотреть сообщение
Не знаком с данным вопросом, поэтому объясню, возможно, немного непонятно. Задача такая: пользователь загружает картинку, мы добавляем к ней логотип и возвращаем новое изображение как файл на скачивание.

Есть пожелание делать все на стороне клиента.

Что лучше использовать? Canvas? У него есть метод, который возвращает содержимое toDataURL(). Для svg про такое не слышал. Возможно ли вообще, что бы js автоматически отдавал какие-нибудь данные для скачивания не с сервера, а из результов работы самого js?

Можно ли как-то, не загружая картинку на сервер, обработать ее в js скрипте?
Всё можно но с кучей оговорок.
Примерно так:
<!DOCTYPE HTML>
<html lang="ru-RU">
<head>
	<meta charset="UTF-8">
	<title></title>
	<style type="text/css">
	body{
		background: #000;
		color: #fff;
	}
	canvas{
		background:-moz-linear-gradient(45deg, white 26%, transparent 25%, transparent 75%, white 75%), 
		-moz-linear-gradient(45deg, white 26%, rgb(217,217,217) 25%, rgb(217,217,217) 75%, white 75%);
		background:-o-linear-gradient(45deg, white 26%, transparent 25%, transparent 75%, white 75%), 
		-o-linear-gradient(45deg, white 26%, rgb(217,217,217) 25%, rgb(217,217,217) 75%, white 75%);
		background:-webkit-linear-gradient(45deg, white 26%, transparent 25%, transparent 75%, white 75%), 
		-webkit-linear-gradient(45deg, white 26%, rgb(217,217,217) 25%, rgb(217,217,217) 75%, white 75%);
		background:linear-gradient(45deg, white 26%, transparent 25%, transparent 75%, white 75%), 
		linear-gradient(45deg, white 26%, rgb(217,217,217) 25%, rgb(217,217,217) 75%, white 75%);
		background-size:20px 20px;
		background-position: 0 0, 10px 10px;
		display:block;
	}
	a{color: #a00}
	a:hover{color: #f00}
	</style>
</head>
<body>
	<input type="file" id="input" onchange="handleFiles(this.files)">
	<canvas id="canvas" width=100 height=100></canvas>
	<a href="#" id="download" download="ingvithlogo.png">download</a>
	<script type="text/javascript">
	function handleFiles(files){
		var canvas = document.getElementById('canvas'),
			download = document.getElementById('download'),
			ctx = canvas.getContext('2d'),
			img = new Image();
		
		img.onload = function(){
			canvas.width = img.width;
			canvas.height = img.height;
			
			ctx.drawImage(img,0,0);
			
			ctx.font = '20px Georgia,serif'
			ctx.strokeStyle = "#0F0";
			ctx.strokeText('=^_^=', 5, canvas.height-5);
			
			download.href = canvas.toDataURL();
		}
		img.src = URL.createObjectURL(files[0]);
	}
	</script>
</body>
</html>



А верное решение на текрущий момент в большинстве случаев:
Сообщение от Marv Посмотреть сообщение
Или мне не заморачиваться со всем этим и просто использовать php + gd?
__________________
29375, 35
Ответить с цитированием