论坛首页 编程语言技术论坛

基于jquery和mini_magick的图片裁剪

浏览 19649 次
该帖已经被评为良好帖
作者 正文
   发表时间:2009-12-09  
以前 我用 jquery imageselectarea.js + rmagick 同样实现了该功能。。原理一样
0 请登录后投票
   发表时间:2009-12-15  
服务端技术,没什么看头。
0 请登录后投票
   发表时间:2009-12-15  
不错啊,要是能在前台用JS剪裁就好了,YY一下
0 请登录后投票
   发表时间:2010-01-13  
 function initValue(){  
       var o    = new Object();         
       var x    = $("#avatar").width();  
      var y    = $("#avatar").height();  
      var size = x >= y ? y : x;  
      size     = size >= 100 ? 100 : size;  
      o.x1 = (x - size) / 2;  
      o.y1 = (y - size) / 2;  
      o.x2 = o.x1 + size;  
       o.y2 = o.y1 + size;  
      return o;  

 

我发现如果图片加载比较慢的话就不能正确获取.width()和.height

因为jquery在DOM加载完毕后就开始执行,可能获取width的时候图片才加载了一点点,就导致了默认的选取框只有一个点。

这个有解决的办法么?

0 请登录后投票
   发表时间:2010-01-14  
ywencn 写道
 function initValue(){  
       var o    = new Object();         
       var x    = $("#avatar").width();  
      var y    = $("#avatar").height();  
      var size = x >= y ? y : x;  
      size     = size >= 100 ? 100 : size;  
      o.x1 = (x - size) / 2;  
      o.y1 = (y - size) / 2;  
      o.x2 = o.x1 + size;  
       o.y2 = o.y1 + size;  
      return o;  

 

我发现如果图片加载比较慢的话就不能正确获取.width()和.height

因为jquery在DOM加载完毕后就开始执行,可能获取width的时候图片才加载了一点点,就导致了默认的选取框只有一个点。

这个有解决的办法么?

 

图片load完之后再执行不就行了?

0 请登录后投票
   发表时间:2010-01-14  
ywencn 写道
 function initValue(){  
       var o    = new Object();         
       var x    = $("#avatar").width();  
      var y    = $("#avatar").height();  
      var size = x >= y ? y : x;  
      size     = size >= 100 ? 100 : size;  
      o.x1 = (x - size) / 2;  
      o.y1 = (y - size) / 2;  
      o.x2 = o.x1 + size;  
       o.y2 = o.y1 + size;  
      return o;  

 

我发现如果图片加载比较慢的话就不能正确获取.width()和.height

因为jquery在DOM加载完毕后就开始执行,可能获取width的时候图片才加载了一点点,就导致了默认的选取框只有一个点。

这个有解决的办法么?

这是和浏览器有关,ie下可以获取。其他浏览器有问题。。

有两种解决方案:

1.服务器端传回一个图片长宽的值放在页面隐藏域,js读取隐藏域来获取图片宽高。

2.在服务器端把图片不足200x200的添加白边到200x200(回复里已经有做法),然后初始化选择框的时候就可以指定一个定值。

0 请登录后投票
   发表时间:2010-01-14  
请问有用mini_magick在图片上画中文字的么?
如在照片上,写上“你好”,“你好Hooopo”

我发现纯中文字是可以的,一旦字符串中夹杂数字或者字母就整个字符串打出来是乱码
0 请登录后投票
   发表时间:2010-01-14  
kamama 写道
请问有用mini_magick在图片上画中文字的么?
如在照片上,写上“你好”,“你好Hooopo”

我发现纯中文字是可以的,一旦字符串中夹杂数字或者字母就整个字符串打出来是乱码

加文字没试过,但是如果有乱码可以先用Photoshop制作一个小图片用imagMagick的composite命令贴上去
0 请登录后投票
   发表时间:2010-04-07  
你好,我想请问一下,为什么我的程序总是在 img  = MiniMagick::Image.from_blob(photo.read) 这句报错呢?错误是undefined methods “read”,我查了一下photo的class,是个很奇怪的类——HashWithIndifferentAccess,貌似这个类里没有read的方法?不解……等待楼主的帮助~万分感激~
0 请登录后投票
   发表时间:2010-04-07  
rocheers 写道
你好,我想请问一下,为什么我的程序总是在 img  = MiniMagick::Image.from_blob(photo.read) 这句报错呢?错误是undefined methods “read”,我查了一下photo的class,是个很奇怪的类——HashWithIndifferentAccess,貌似这个类里没有read的方法?不解……等待楼主的帮助~万分感激~

你的表单是什么样子的?photo的class是HashWithIndifferentAccess说明你得到的不是File对象,没有read方法....

你把photo对象详细的打印出来就知道了。

<%=debug(@photo) %>
0 请登录后投票
论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics