Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 26.07.2013, 12:45
Аспирант
Отправить личное сообщение для dmivasant Посмотреть профиль Найти все сообщения от dmivasant
 
Регистрация: 17.07.2013
Сообщений: 47

Screenshot определенной части экрана средствами javascript
Здравствуйте, уважаемые. Стоит такая задача: Превратить содержимое div-блока в картинку и предложить пользователю скачать её.

<!DOCTYPE html>
<head>
    <meta http-equiv="content-type" content="text/html; charset=utf-8" />

    <style type="text/css">
        div {
            width:200px;
            background-color: green;
        }
    </style>

    <script type="text/javascript" src="http://night-creature.com/html2canvas.js"></script>
    <script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
</head>
<body>
    <div id="downimg">
        <div>
            some text
        </div>
    </div>

    <script language="javascript">
        function downimg(){
            html2canvas($('#downimg'), {
                onrendered: function (canvas) {
                    var img = canvas.toDataURL('image/png').replace("image/png", "image/octet-stream");

                    window.location.href = img;                     
                }
            });
        }
    </script>

    <a href="javascript:void(0)" onClick="downimg()" >SAVE</a>
</body>
</html>


такто работает, но сохраняет без расширения.Приходиться руками писать png? что не есть хорошо. Нашол решения на сайте http://updates.html5rocks.com/2011/0...he-client-side но по англиске не понимаю, да и вобще не понял что там к чему. Хотелось бы чтоб как у ни в демо http://eligrey.com/demos/FileSaver.js/
Кто знает как это сделать

Последний раз редактировалось dmivasant, 26.07.2013 в 13:05.
Ответить с цитированием
  #2 (permalink)  
Старый 26.07.2013, 13:11
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Ух ты! Не знал что такое можно провернуть в Firefox.
Подключай либы FileSaver.js и canvas-toBlob.js.
Когда нужно сохранить содержимое холста, вызывай:
canvas.toBlob(function(blob) {
	saveAs(blob ,"blabla.png");
}, "image/png");
Ответить с цитированием
  #3 (permalink)  
Старый 26.07.2013, 13:13
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

А причем тут jQuery?
Ответить с цитированием
  #4 (permalink)  
Старый 29.07.2013, 04:17
Аспирант
Отправить личное сообщение для dmivasant Посмотреть профиль Найти все сообщения от dmivasant
 
Регистрация: 17.07.2013
Сообщений: 47

Сообщение от danik.js Посмотреть сообщение
Ух ты! Не знал что такое можно провернуть в Firefox.
Подключай либы FileSaver.js и canvas-toBlob.js.
Когда нужно сохранить содержимое холста, вызывай:
canvas.toBlob(function(blob) {
	saveAs(blob ,"blabla.png");
}, "image/png");
А можно на моем примере подробно?
Ответить с цитированием
  #5 (permalink)  
Старый 29.07.2013, 04:32
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Так прямо этот код и вставляй, без изменений
Ответить с цитированием
  #6 (permalink)  
Старый 29.07.2013, 05:31
Аспирант
Отправить личное сообщение для dmivasant Посмотреть профиль Найти все сообщения от dmivasant
 
Регистрация: 17.07.2013
Сообщений: 47

Сообщение от danik.js Посмотреть сообщение
Так прямо этот код и вставляй, без изменений
Не понимаю я, вставил код, а нечего не работает

<!DOCTYPE html>
<head>
    <meta http-equiv="content-type" content="text/html; charset=utf-8" />

    <style type="text/css">
        div {
            width:200px;
            background-color: green;
        }
    </style>
<script src="js/FileSaver.js"></script>
<script src="js/canvas-toBlob.js"></script>
    <script type="text/javascript" src="http://night-creature.com/html2canvas.js"></script>
    <script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
</head>
<body>
    <div id="downimg">
        <div>
            some text
        </div>
    </div>

  <script language="javascript">
canvas.toBlob(function(blob) {
    saveAs(blob ,"blabla.png");
}, "image/png");

:help: 
</script>

    <form id="canvas-options">
<label>
Filename:
<input id="canvas-filename" class="filename" type="text" placeholder="doodle"/>
.png
</label>
<input type="submit" value="Save"/>
<input id="canvas-clear" type="button" value="Clear"/>
</form>
</body>
</html>

Последний раз редактировалось dmivasant, 29.07.2013 в 06:10.
Ответить с цитированием
  #7 (permalink)  
Старый 29.07.2013, 05:56
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Ну вобще-то canvas с неба не свалится. Где у тебя тут вызов функции html2canvas? В коде выше у тебя все есть, а тут уже нету.
Ответить с цитированием
  #8 (permalink)  
Старый 29.07.2013, 06:12
Аспирант
Отправить личное сообщение для dmivasant Посмотреть профиль Найти все сообщения от dmivasant
 
Регистрация: 17.07.2013
Сообщений: 47

Сообщение от danik.js Посмотреть сообщение
Ну вобще-то canvas с неба не свалится. Где у тебя тут вызов функции html2canvas? В коде выше у тебя все есть, а тут уже нету.
<!DOCTYPE html>
<head>
    <meta http-equiv="content-type" content="text/html; charset=utf-8" />

    <style type="text/css">
        div {
            width:200px;
            background-color: green;
        }
    </style>
<script src="js/FileSaver.js"></script>
<script src="js/canvas-toBlob.js"></script>
    <script type="text/javascript" src="http://night-creature.com/html2canvas.js"></script>
    <script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
</head>
<body>
    <div id="downimg">
        <div>
            some text
        </div>
    </div>

  <script language="javascript">
        function downimg(){
            html2canvas($('#contener'), {
                onrendered: function (canvas) {
                    var img = canvas.toDataURL('image/png').replace("image/png", "image/octet-stream");

                    window.location.href = img;                     
                }
            });
        }
		canvas.toBlob(function(blob) {
    saveAs(blob ,"blabla.png");
}, "image/png");
</script>

    <form id="canvas-options">
<label>
Filename:
<input id="canvas-filename" class="filename" type="text" placeholder="doodle"/>
.png
</label>
<input type="submit" value="Save"/>
<input id="canvas-clear" type="button" value="Clear"/>
</form>
</body>
</html>

не работает
Ответить с цитированием
  #9 (permalink)  
Старый 29.07.2013, 07:38
Аспирант
Отправить личное сообщение для dmivasant Посмотреть профиль Найти все сообщения от dmivasant
 
Регистрация: 17.07.2013
Сообщений: 47

Сообщение от dmivasant Посмотреть сообщение
<!DOCTYPE html>
<head>
    <meta http-equiv="content-type" content="text/html; charset=utf-8" />

    <style type="text/css">
        div {
            width:200px;
            background-color: green;
        }
    </style>
<script src="js/FileSaver.js"></script>
<script src="js/canvas-toBlob.js"></script>
    <script type="text/javascript" src="http://night-creature.com/html2canvas.js"></script>
    <script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
</head>
<body>
    <div id="downimg">
        <div>
            some text
        </div>
    </div>

  <script language="javascript">
        function downimg(){
            html2canvas($('#contener'), {
                onrendered: function (canvas) {
                    var img = canvas.toDataURL('image/png').replace("image/png", "image/octet-stream");

                    window.location.href = img;                     
                }
            });
        }
		canvas.toBlob(function(blob) {
    saveAs(blob ,"blabla.png");
}, "image/png");
</script>

    <form id="canvas-options">
<label>
Filename:
<input id="canvas-filename" class="filename" type="text" placeholder="doodle"/>
.png
</label>
<input type="submit" value="Save"/>
<input id="canvas-clear" type="button" value="Clear"/>
</form>
</body>
</html>

не работает

Куда вставить эту конструкцию, чтоб работала?
canvas.toBlob(function(blob) {
saveAs(blob ,"blabla.png");
}, "image/png");
Ответить с цитированием
  #10 (permalink)  
Старый 29.07.2013, 08:21
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Туда, где доступна переменная canvas, ясное же дело.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Снимок экрана средствами js css_js Общие вопросы Javascript 1 01.05.2012 17:57
Последние книги по JavaScript! monolithed Учебные материалы 7 26.10.2010 19:40
Выдвет ошибку JavaScript Ромио Opera, Safari и др. 4 21.10.2010 20:34
Изменение ссылки средствами JavaScript stepback Общие вопросы Javascript 1 19.08.2010 14:08
Меню выезжающее слева при подведении курсора к левой части экрана Артём Тарасов Общие вопросы Javascript 6 25.02.2009 14:18