Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Screenshot определенной части экрана средствами javascript (https://javascript.ru/forum/jquery/40173-screenshot-opredelennojj-chasti-ehkrana-sredstvami-javascript.html)

dmivasant 26.07.2013 12:45

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/
Кто знает как это сделать:help:

danik.js 26.07.2013 13:11

Ух ты! Не знал что такое можно провернуть в Firefox.
Подключай либы FileSaver.js и canvas-toBlob.js.
Когда нужно сохранить содержимое холста, вызывай:
canvas.toBlob(function(blob) {
	saveAs(blob ,"blabla.png");
}, "image/png");

danik.js 26.07.2013 13:13

А причем тут jQuery?

dmivasant 29.07.2013 04:17

Цитата:

Сообщение от danik.js (Сообщение 264338)
Ух ты! Не знал что такое можно провернуть в Firefox.
Подключай либы FileSaver.js и canvas-toBlob.js.
Когда нужно сохранить содержимое холста, вызывай:
canvas.toBlob(function(blob) {
	saveAs(blob ,"blabla.png");
}, "image/png");

А можно на моем примере подробно?

danik.js 29.07.2013 04:32

Так прямо этот код и вставляй, без изменений

dmivasant 29.07.2013 05:31

Цитата:

Сообщение от danik.js (Сообщение 264765)
Так прямо этот код и вставляй, без изменений

Не понимаю я, вставил код, а нечего не работает

<!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>

danik.js 29.07.2013 05:56

Ну вобще-то canvas с неба не свалится. Где у тебя тут вызов функции html2canvas? В коде выше у тебя все есть, а тут уже нету.

dmivasant 29.07.2013 06:12

Цитата:

Сообщение от danik.js (Сообщение 264769)
Ну вобще-то 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>

не работает:-E

dmivasant 29.07.2013 07:38

Цитата:

Сообщение от dmivasant (Сообщение 264772)
<!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>

не работает:-E


Куда вставить эту конструкцию, чтоб работала?
canvas.toBlob(function(blob) {
saveAs(blob ,"blabla.png");
}, "image/png");

danik.js 29.07.2013 08:21

Туда, где доступна переменная canvas, ясное же дело.


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