【问题标题】:Crop and resize image on clientside在客户端裁剪和调整图像大小
【发布时间】:2010-07-15 19:23:51
【问题描述】:

是否可以在客户端 PC 上使用客户端选择的图像而无需将图像上传到服务器。

如果是,哪种网络编程语言可以做到这一点?

【问题讨论】:

    标签: image-processing crop


    【解决方案1】:

    你可以使用 HTML5 Canvas,不需要使用插件之类的。

    加载图像,更改画布大小并绘制图像。也可以将结果提取为 dataUrl。

    <!DOCTYPE HTML>
    <html>
      <head>
        <style>
          body { margin: 0px; padding: 0px; }
        </style>
      </head>
      <body>
        <canvas id="myCanvas" width="578" height="200"></canvas>
        <script>
          var canvas = document.getElementById('myCanvas');
          var context = canvas.getContext('2d');
          var imageObj = new Image();
    
          imageObj.onload = function() {
            // draw cropped image
            var sourceX = 150;
            var sourceY = 0;
            var sourceWidth = 150;
            var sourceHeight = 150;
            var destWidth = sourceWidth;
            var destHeight = sourceHeight;
            var destX = canvas.width / 2 - destWidth / 2;
            var destY = canvas.height / 2 - destHeight / 2;
    
            context.drawImage(imageObj, sourceX, sourceY, sourceWidth, sourceHeight, destX, destY, destWidth, destHeight);
          };
          imageObj.src = 'http://www.html5canvastutorials.com/demos/assets/darth-vader.jpg';
        </script>
      </body>
    </html>
    

    所有功劳归于:

    http://www.html5canvastutorials.com/tutorials/html5-canvas-image-crop/

    【讨论】:

      【解决方案2】:

      这只能通过FlashSilverlight 或自定义Plugin/ActiveX 来完成,具体取决于目标浏览器。

      【讨论】:

      • 所以flash允许直接在用户机器上编辑图像?如果是真的,那就太感谢了。我会调查的。 :)
      【解决方案3】:

      这也可以使用 jQuery、MooTools、Prototype 和 script.aculo.us 等 javascript 库来完成:

      http://www.bitrepository.com/image-cropping-with-jquery-mootools-prototype-scriptaculous.html

      【讨论】:

      • 据我所知,虽然裁剪是通过客户端 UI 安排的,但图像必须先上传到服务器。 JS 只是将坐标发送到服务器,服务器会裁剪和缩放。因此,这不符合问题的要求,因为必须先上传图片。
      • 实际上,如果您使用 HTML5,您可以直接在浏览器中操作原始像素数据。参见,例如:developer.mozilla.org/En/HTML/Canvas/…
      • @Cole 您可以使用 javascript 访问本地文件。例如:使用 HTML5 读取文件,html5rocks.com/tutorials/file/dndfiles/#toc-reading-files,或者在本地运行你的 javascript,就像 tiddlywiki 一样 tiddlywiki.com
      • 好的,一旦所有浏览器都支持 Canvas 和 HTML5 就可以了,但是您链接到的页面上的项目不能以这种方式工作。 .我已经使用 imgAreaSelect 构建了一个图像上传系统。实际的缩放是在服务器端使用 gd/imagemagick 处理的。 T
      • @Cole 只是小问题,但在任何支持 HTML5 画布的浏览器中都是可能的,目前包括最新版本的 Firefox、Safari 和 Chrome。此外,如果您从本地计算机加载页面,仍然可以操作图像数据,但不是真正的裁剪/调整大小。
      【解决方案4】:

      如果您正在寻找 javascript 的图像裁剪器,请查看:https://github.com/supnate/icropper。它提供了裁剪的用户界面,但不是真正裁剪图像。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-11-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多