如何通过 Grails 使用 imgscalr

2024-04-08

我最近几天才开始使用 Groovy 和 Grails。我之前没有任何 Java 经验,所以您必须原谅这个(可能)非常基本的问题。我搜索了 Google 和 Stack Overflow,但没有找到任何可以帮助我实际安装的内容。

我已经可以上传图像,并且正在将文件存储在服务器上。我使用 IBM Grails 教程来指导我完成它。效果很好。

我还想以大、中、小格式调整文件大小。我想使用 imgscalr 来实现此目的,但我无法让它工作。我已经下载了 4.2 版本,其中包含各种 .jar 文件。我需要将它们放在服务器上的某个位置并引用它们吗?我所做的唯一一件事就是将这些行添加到buildConfig.groovy

dependencies {
    // specify dependencies here under either 'build', 'compile', 'runtime', 'test' or 'provided' scopes eg.

    // runtime 'mysql:mysql-connector-java:5.1.20'
    compile 'org.imgscalr:imgscalr-lib:4.2'
}

and import org.imgscalr.Scalr.* in my PhotoController.Groovy

这是我将文件保存到服务器上的代码,我还想调整大小并保存图像。

def save() {
    def photoInstance = new Photo(params)

    // Handle uploaded file
    def uploadedFile = request.getFile('photoFile')
    if(!uploadedFile.empty) {
        println "Class: ${uploadedFile.class}"
        println "Name: ${uploadedFile.name}"
        println "OriginalFileName: ${uploadedFile.originalFilename}"
        println "Size: ${uploadedFile.size}"
        println "ContentType: ${uploadedFile.contentType}"

        def webRootDir = servletContext.getRealPath("/")

        def originalPhotoDir = new File(webRootDir, "/images/photographs/original")
        originalPhotoDir.mkdirs()
        uploadedFile.transferTo(new File(originalPhotoDir, uploadedFile.originalFilename))

        BufferedImage largeImg = Scalr.resize(uploadedFile, 1366);
        def largePhotoDir = new File(webRootDir, "/images/photographs/large")
        largePhotoDir.mkdirs()

        photoInstance.photoFile = uploadedFile.originalFilename
    }

    if (!photoInstance.hasErrors() && photoInstance.save()) {
        flash.message = "Photo ${photoInstance.id} created"
        redirect(action:"list")
    }
    else {
        render(view:"create", model:[photoInstance: photoInstance])
    }
}

我收到的错误是No such property: Scalr for class: garethlewisweb.PhotoController

我显然做了一些非常错误的事情。任何指导表示赞赏。


这是“How to use imgscalr in grails”的第一个谷歌结果,我对谷歌搜索时缺乏信息和示例感到惊讶。虽然第一个答案很接近,但仍有一些错误需要纠正。

对于像我这样通过谷歌结束这里的人,这里有一个更详细的示例,说明如何正确使用这个不错的插件:

首先,在您的中声明插件BuildConfig.groovy file:

dependencies {
    // specify dependencies here under either 'build', 'compile', 'runtime', 'test' or 'provided' scopes eg.

    // runtime 'mysql:mysql-connector-java:5.1.20'
    compile 'org.imgscalr:imgscalr-lib:4.2'
}

然后,安装后,只需将这段代码粘贴到您的控制器中,在接收带有上传图像的多部分表单的操作中。

def create() {

     def userInstance = new User(params)

     //saving image
     def imgFile = request.getFile('myFile')
     def webRootDir = servletContext.getRealPath("/")
     userInstance.storeImageInFileSystem(imgFile, webRootDir)  

     (...) 
}

在我的域内,我实现了这个storeImageInFileSystem方法,它将调整图像大小并将其存储在文件系统中。但首先,将其导入到文件中:

import org.imgscalr.Scalr
import java.awt.image.BufferedImage
import javax.imageio.ImageIO

然后,实现该方法:

def storeImageInFileSystem(imgFile, webRootDir){

    if (!imgFile.empty)
    {
        def defaultPath = "/images/userImages"
        def systemDir = new File(webRootDir, defaultPath)

        if (!systemDir.exists()) {
            systemDir.mkdirs()
        }

        def imgFileDir = new File( systemDir, imgFile.originalFilename)
        imgFile.transferTo( imgFileDir )

        def imageIn = ImageIO.read(imgFileDir);

        BufferedImage scaledImage = Scalr.resize(imageIn, 200);   //200 is the size of the image
        ImageIO.write(scaledImage, "jpg", new File( systemDir, imgFile.originalFilename )); //write image in filesystem

       (...)
    }
}

这对我来说效果很好。根据需要更改任何详细信息,例如系统目录或图像的大小。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何通过 Grails 使用 imgscalr 的相关文章

  • Grails:如何查询多对多映射中的对象?

    您好 我有以下域类 class Student int age static hasMany courses Course class Course String name static hasMany students Student 我
  • iOS - 基于设备的不同图像或缩放相同的图像?

    似乎开发人员总是为不同的设备创建不同的图像资源 并根据设备加载它们 但是 只为最高分辨率的设备 iPad 创建图像 然后为 iPhone 6 5 等缩小该图像 有什么缺点吗 我使用 SpriteKit 因此我只需创建不同大小的 SKSpri
  • Tkinter:无法识别图像文件中的数据[重复]

    这个问题在这里已经有答案了 我有以下问题 我使用外部应用程序生成 GIF 文件 对我来说 GIF 看起来不错 我可以毫无问题地打开它们 然而 使用 photo PhotoImage file screenshot file self pre
  • Android:自动从项目包中删除未使用的图像

    我正在开发一个相当大的android项目 并且在drawable文件夹中有很多图像 其中许多图像未在项目中使用 因为它们已被替换 并且占用了宝贵的空间 有什么方法可以自动找到这些图像并删除它们 而不是搜索项目中的每个图像 我使用过的一些工具
  • JS - 如何将图像对象变成灰度并显示它

    基本上 当单击按钮时 它会告诉移动设备转到相机 一旦相机拍照 它就会给我图像数据 它被称为数据 URL 吗 这是我处理它的代码 var imagesrc data image jpeg base64 imageData var myimag
  • 部署 Grails 应用程序时出错 - 初学者

    我在部署 Grails 应用程序时遇到问题 一切都在本地测试环境中运行 ERROR localhost startStop 1 错误 context GrailsContextLoader 错误 初始化应用程序 使用名称创建 bean 时出
  • 如何使用javascript检查图像url是否为404

    使用案例 当 src 不为空并且 alt 标签不为空时 则显示 src 的图像 然后检查 src 图片 url 不是 404 当 src 为空且 alt 不为空时 显示名字的图像 当 src 和 alt 为空时显示默认图像 HTML img
  • 在python中将二维数组转换为彩色图像

    我有这样的二维整数列表 list1 1 30 50 21 45 9 97 321 100 接下来我将把它转换为 numpy 数组 myarr np asarray list1 接下来我将使用 PIL 将其转换为图像 如下所示 img Ima
  • Grails Asset-pipeline 不加载角度部分模板

    我将 angular ui bootstrap 与 Grails 2 3 x asset pipeline 1 6 1 插件一起使用 其中一个组件 alert js 正在尝试加载 template alert alert html 但这会解
  • IE10中的图像插值

    这是我的用例 我有一个采用响应式设计的网页 该页面垂直分成两半 我想在右侧显示图像 呈现为 PNG 或 JPG 的 PDF 页面 调整窗口大小后 图像的大小应立即更改 我以为我已经解决了这个问题 我将服务器上的图像渲染得足够大 以适应最大可
  • WPF 中按钮的启用和禁用状态的不同图像

    我想根据按钮的状态更改下面代码中按钮的图像 即使用不同的图像来启用和禁用状态
  • 如何使用 JMagick 转换色彩空间?

    如何使用 JMagick API 转换色彩空间 例如 CMYK gt RGB 和 RGB gt CMYK None
  • 在另一个插件中覆盖插件 GSP 和控制器

    我的项目中有一个相当复杂的 grails 插件依赖结构 并且在覆盖安全插件中的类时遇到问题 我的结构有点像这样 Web App Audit Plugin Spring Security Core Plugin Security Wrappe
  • Matlab 图像数据的 hist 函数

    我是 Matlab 新手 我想制作自己的函数 与 imhist 显示图像数据的直方图 完成相同的工作 但我对此完全是新手 我不知道如何做开发这样的功能 我开始做一些东西 但它非常不完整 function output args myhist
  • 无法创建“DependencyManagementReportTask”类型的任务。 Gradle 新手

    我是 Grails 3 和 Gradle 的新手 我正在努力将应用程序 2 4 4 更新到 Grails 3 2 8 通过升级 我想从头开始构建一个插件 我无法使用声明依赖项的标准方法将其包含到项目中 我正在尝试使用 gradle 构建 g
  • 在grails控制器中识别ajax请求或浏览器请求

    我正在开发一个使用大量ajax的grails应用程序 如果请求是ajax调用 那么它应该给出响应 这部分正在工作 但是如果我在浏览器中输入URL 它应该带我到主页 索引页面而不是请求的页面 下面是ajax调用的示例gsp代码
  • 使用 ImageMagick/convert 创建半透明 PNG

    我有 PNG 文件 我想将整个图像转换为半透明 该图像将在 KML 文件中引用为 Google 地球 地图中使用的图标叠加层 使用 ImageMagick 向我建议了以下示例convert命令 但似乎都不起作用 第一个示例会导致错误 usr
  • PIL.Image.open和tf.image.decode_jpeg返回值的区别

    我使用 PIL Image open 和 tf image decode jpeg 将图像文件解析为数组 但发现PIL Image open 中的像素值与tf image decode jpeg不一样 为什么会出现这种情况 Thanks 代
  • React App 中的图像损坏

    我正在尝试访问 React 应用程序中的图像 当我运行代码时 我在网页上看到一个损坏的图像图标 我不确定我是否正在访问图像的正确路径 我的代码如下 import React Component from react class Header
  • PIL - 需要抖动,但限制调色板会导致问题

    我是 Python 新手 正在尝试使用 PIL 来执行 Arduino 项目所需的解析任务 这个问题涉及到Image convert 方法以及调色板 抖动等选项 我有一些硬件能够一次仅显示 16 种颜色的图像 但它们可以指定为 RGB 三元

随机推荐