Я хочу обрезать, вращать, наклонять изображение с рамкой над ним; Возможно ли использовать JQuery? - PullRequest
0 голосов
/ 14 апреля 2011

Я занимаюсь разработкой приложения, в котором пользователь загружает изображение и увеличивает его, перемещается для установки изображения в рамку.

Я могу выполнять панорамирование и масштабирование, а также установить лицо на рамке (пустое / прозрачное лицо).Пользователь также может просматривать изображения.

В конечном итоге я хочу сохранить окончательное изображение лица, которое выбрал пользователь, но это должно быть одно изображение, состоящее из кадра + лицо пользователя - области за пределами видимого лица.are.

Проблема, с которой я сталкиваюсь, заключается в том, что я не могу удалить ту часть изображения, которая мне не нужна.

Пожалуйста, предложите мне способы, которыми я могу сделать то же самое.Примеры были бы хорошими, но они должны быть реализованы в jQuery / JavaScript.

Снимок экрана:

http://1.bp.blogspot.com/-rP1UMaKx14U/TabCazQA1OI/AAAAAAAAAck/rfL4OBYRP-0/s1600/4-14-2011+3-05-51+PM.png

Код приведен ниже:

<html>
<head>
    <script src="file/ga.js" type="text/javascript"></script>
    <script src="file/jquery.js" type="text/javascript"></script>
    <script src="file/jquery-ui.js" type="text/javascript"></script>
    <script src="file/jquery_002.js" type="text/javascript"></script>
    <script src="file/axzoomer.js" type="text/javascript"></script>

    <script type="text/javascript">

    function adjustMe()
    {
        document.getElementById('layer1').style.z-index = -9999999;
    }

    </script>
</head>

    <div style="width: 100%;">
        <div style="position: relative; left: 0px; top: 0px; width: 360px; height: 270px;">

            <div style="width:400px;height:400px; background-image:url('frame.png')">
            </div>  

            <!--* frame comes above */-->


            <div id="layer1" style="position: absolute; left: 30px; top: 40px; width: 360px; height: 270px;">
                <img id="dyn" class="ex ax-zoom" src="peng.jpg" style="width: 360px;opacity: 0.2;filter:alpha(opacity=30); height: 270px; position: absolute; top: 0px; left: 0px;"/>
            </div>
                <div style="display: none; position: absolute; opacity: 0.5; height: 35px; top: 240px; left: 148px;" class="ax-controls">
                    <img style="cursor: pointer;" src="file/zoom-in.png">
                    <img style="cursor: pointer;" src="file/zoom-out.png">

                </div>



        </div>
    </div>

    <br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>
    <div style="clear:both;">
        <input type="button" value="Done" onclick="adjustMe();"/>
    </div>
    <script type="text/javascript">
    $('.ex').axzoomer({
        'maxZoom':4,
        'zoomIn':'file/zoom-in.png',
        'zoomOut':'file/zoom-out.png',
        'opacity':0.5,
        'sensivity':10
    });


    </script>
</body>

Ответы [ 5 ]

1 голос
/ 14 апреля 2011

Вы не можете изменить / сохранить изображение в javascript / jquery (насколько я знаю). Вам придется использовать серверные библиотеки для работы с изображениями, такие как gdlib (http://www.boutell.com/gd/), которая обычно активируется по умолчанию в php, или imagemagick (http://www.imagemagick.org/script/index.php)

)
0 голосов
/ 15 марта 2013

Вы не можете манипулировать файлом изображения с помощью Javascript. Необходимо задействовать сценарий на стороне сервера. Лучший способ добиться того, что вам нужно (используя Jquery на стороне клиента и PHP на языке сервера), - использовать плагин Jcrop.это лучший плагин для обрезки изображения, и у них также есть один пример в их источнике с демонстрацией обрезки изображения с Jcrop и PHP.Попробуйте зайти на Официальный сайт Jcrop .Пример обрезки с помощью серверного скрипта: Здесь .

0 голосов
/ 15 апреля 2011

добавив некоторую опцию в axzoomer (я планирую расширить функциональность плагина), чтобы получить текущее измерение и просмотреть координаты изображения, вы можете выполнить обрезку изображения с помощью опции на стороне сервера. У вас уже есть изображение на стороне сервера, поэтому вы можете изменить его размер на сервере, отправив на сервер только измерения (для изменения размера) и координаты (для последующего кадрирования) с помощью запроса AJAX, и после этого создайте новое изображение в строке base64. если отправить напрямую через ajax, вернуть xmlresponse или сохранить его в фиксированном файле, а затем отправить по xmlresponse URL-адрес файла. Таким образом вы получите на лету изображение обрезки. Другой способ, может быть, используя холст. AlbanX

0 голосов
/ 14 апреля 2011

Вы должны попытаться получить новые координаты панорамируемого изображения и передать его на сторону сервера и выполнить манипуляции с изображением на стороне сервера.Если вы используете python, вы будете использовать PIL для управления изображением и сохранения его в базе данных.Единственное, что вы должны передать, это новые координаты панорамированного изображения на стороне сервера.

0 голосов
/ 14 апреля 2011

Невозможно выполнить обработку изображений с помощью jQuery / javascript. Вы должны вовлечь сервер в это.

Я проделал такую ​​работу в asp.net. Мой метод состоял из следующих шагов

  1. Загрузить изображение на сервер
  2. показать изображение для панорамирования / увеличения
  3. когда пользователь сделал настройку,
    1. получить видимые размеры изображения
    2. отправить измерение на сервер
  4. сервер получит новые точки прямоугольника и обрежет изображение (растровое изображение, графические классы в GDI + в среде точечной сети)
  5. Объединить кадр с обрезанным изображением. (Графический класс в GDI + в среде dot net)
...