Скрипт для рисования изображения - PullRequest
0 голосов
/ 04 февраля 2011

Я ищу сценарий PHP, который позволил бы мне нарисовать изображение с помощью мыши и сохранить его как изображение. Если вы знаете, пожалуйста, помогите.

Ответы [ 2 ]

2 голосов
/ 04 февраля 2011

В случае, если вы делаете хотите заново изобрести несколько колес: -)

Создайте фрагмент кода Javascript, который позволит вам рисовать. Конечно, это может быть настолько сложным или простым, как вы хотите, например:

var canvas = document.getElementById("canvas"),
    ctx = canvas.getContext("2d"),   
    pos = false;

ctx.strokeStyle = "red";

$(canvas).bind("mousedown", function(evt) {
    pos = {x: evt.layerX, y: evt.layerY};
    ctx.beginPath();
    ctx.moveTo(pos.x, pos.y);
});

$(canvas).bind("mousemove", function(evt) {
    if(!pos) return; // You may not want to do this on every mousemove.
    pos = {x: evt.layerX, y: evt.layerY};
    ctx.lineTo(pos.x, pos.y);
    ctx.stroke();
});

$(canvas).bind("mouseup", function(evt) {
    if(!pos) return;
    ctx.closePath();
    pos = false;
});

Также добавьте кнопку, которая отправляет данные изображения в ваш PHP-скрипт:

$('#btn').bind("click", function(evt) { 
    $.post('saveImage.php', {image : canvas.toDataURL('image/jpeg')});
});

В вашем скрипте saveImage.php на сервере, декодируйте данные и записывайте их в файл.

$imgData = $_POST["image"]; // Probably a good idea to sanitize the input!
$imgData = str_replace(" ", "+", $imgData);
$imgData = substr($imgData, strpos($imgData, ","));

$file = fopen('myImage.jpg', 'wb');
fwrite($file, base64_decode($imgData));
fclose($file);

Должен сделать свое дело :-) Я использую jQuery для бит JS, это, конечно, не нужно.

1 голос
/ 04 февраля 2011

PHP выполняется на стороне сервера, тогда как взаимодействие с мышью осуществляется на стороне клиента. Вам потребуется использовать встроенную в браузер технологию, такую ​​как JavaScript или Flash, чтобы фиксировать движения мыши и сначала генерировать растровые данные.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...