【问题标题】:Problem with ImageTools plugin in GrailsGrails 中 ImageTools 插件的问题
【发布时间】:2009-03-14 14:20:31
【问题描述】:

我有一个带有图像域类和控制器的 grails 项目。 我刚刚安装了 grails ImageTools 1.0.4 插件,我想为将要上传的图像生成缩略图。

我的图像域类:

    class Image {
byte[] data
//String name

byte[] thumbnail

static constraints = {
//name()
    data()
}
}

我的控制器中的“安全”操作:

def save = {
def imageInstance = new Image(params)
def imageTool = new ImageTool()
imageTool.load(imageInstance.data)
imageTool.thumbnail(320)
imageInstance.thumbnail = imageTool.getBytes("JPEG") //Here is my problem!
if(!imageInstance.hasErrors() && imageInstance.save()) {
    flash.message = "Image ${imageInstance.id} created"
    redirect(action:show,id:imageInstance.id)
}
else {
    render(view:'create',model:[imageInstance:imageInstance])
}
}

当我启动我的 Grails 应用程序并上传图片时,我收到以下错误消息:

错误 200:groovy.lang.MissingMethodException:没有方法签名:ImageTool.getBytes() 适用于参数类型:(java.lang.String) 值:{"JPEG"} 小服务程序:grails URI:/grailsproject/grails/image/save.dispatch 异常消息:没有方法签名:ImageTool.getBytes() 适用于参数类型:(java.lang.String) 值:{"JPEG"} 引起:groovy.lang.MissingMethodException:没有方法签名:ImageTool.getBytes()适用于参数类型:(java.lang.String)值:{“JPEG”} 类:GrailsAuthenticationProcessingFilter 在线:[57]

它说方法 getBytes() 丢失,但该方法仍然可用。我的 IDE intelliJ 也识别不出任何错误。

那我该怎么办?有人可以帮我吗? 对不起,我的英语不好。如果你是德国人,请看http://support-network.info/board/problem-mit-imagetools-getbytes-t3008.html

【问题讨论】:

    标签: java image grails plugins groovy


    【解决方案1】:

    我使用 Grails 1.0.4。 我可以修复此错误消息。我刚刚从 Ricardo(插件开发者)的 git Repository 复制了 getBytes() 方法,并用新的替换了旧的。现在一切正常!我不知道错误在哪里,但我很高兴我解决了它。

    非常感谢你们!

    【讨论】:

      【解决方案2】:

      看起来该方法是该类的一个相当新的补充(2009 年 3 月 6 日)。如果您已验证该方法在 ./plugins/imagetools/src/groovy/ImageTool.groovy 文件中,我建议您运行:

      grails clean
      

      如果您之前使用过此插件,则可能是缓存问题。

      【讨论】:

      • 在我的 ImageTool.groovy 中该方法可用。我做了 grails clean 但没有效果,问题仍然存在。有什么想法吗?
      • Grails 1.0.4 还是 1.1?存在任何以前版本的插件吗?在非码头容器上运行应用程序或战争部署期间出现问题?尝试在 IDE 内外运行项目?我已经使用 grails 1.0.4 和 1.1 尝试了您的代码,并且成功了。
      【解决方案3】:

      您从 John 那里收到的回复听起来很正确 - 如果您已经安装了新插件并且可以看到代码,但仅在 IntelliJ 之外不断收到此错误,您应该尝试清理您的 grails 缓存 - 很可能是旧的插件的副本在缓存中预编译。

      您使用的是 Grails 1.1 吗?我还没有使用最新的 grails 对其进行测试,但我知道它不会将插件保存在项目下,而是保存在单独的目录中。请告诉我,我会试试看。

      【讨论】:

        【解决方案4】:

        我不知道插件在直接使用 JAI 时真正给你带来了什么,恕我直言,它并没有做太多。

        我在图像转换过程中使用 ImageMagick,从我所看到的结果来看,结果优于使用 JAI 可以完成的结果。当然,如果你不能像亚马逊那样做尽可能多的流量耗尽进程,但是如果你需要尽快获得收入,那么你可能需要考虑我所做的事情。

        我使用 apache-commons-exec 有一个很好的接口来处理打开外部进程和从 std 输入和输出读取数据。我使用 JAI 的唯一目的是读取图像的大小。

        【讨论】:

          【解决方案5】:
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2014-08-30
          • 2016-06-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多