gpt4 book ai didi

image - 如何使用 Grails 使用 imgscalr

转载 作者:行者123 更新时间:2023-12-05 01:12:05 25 4
gpt4 key购买 nike

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

我有一个图像上传工作,我将文件存储在服务器上。我使用了 IBM Grails 教程来指导我完成它。这很好用。

我还想以大、中和小格式调整文件大小。我想为此使用 imgscalr,但我无法让它工作。我已经下载了包含各种 .jar 文件的 4.2 版。我是否需要将这些放在服务器上的某个地方并引用它们?我所做的唯一一件事就是将这些行添加到 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'
}

import org.imgscalr.Scalr.*在我的 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
我显然做错了什么。任何指导表示赞赏。

最佳答案

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

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

首先,在您的 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'
}

然后,安装后,只需将这段代码粘贴到您的 Controller 中,在接收带有上传图像的多部分表单的操作中。
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

(...)
}
}

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

关于image - 如何使用 Grails 使用 imgscalr,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14399537/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com