Tôi đang phát triển một Album Web bằng Grails và để xử lý hình ảnh, tôi đang sử dụng plugin grails-image-tools. Tôi cần một chức năng để thay đổi kích thước hình ảnh nếu kích thước hình ảnh tải lên quá lớn (ví dụ: hơn 600 * 840). Trong trường hợp này, tôi cần phải thay đổi kích thước hình ảnh này thành 600 * 840). Cách hiệu quả nhất để làm điều này là gì? Cảm ơn rất nhiều.Thay đổi kích thước hình ảnh trong Grails
12
A
Trả lời
7
import java.awt.Image as AWTImage
import java.awt.image.BufferedImage
import javax.swing.ImageIcon
import javax.imageio.ImageIO as IIO
import java.awt.Graphics2D
static resize = { bytes, out, maxW, maxH ->
AWTImage ai = new ImageIcon(bytes).image
int width = ai.getWidth(null)
int height = ai.getHeight(null)
def limits = 300..2000
assert limits.contains(width) && limits.contains(height) : 'Picture is either too small or too big!'
float aspectRatio = width/height float requiredAspectRatio = maxW/maxH
int dstW = 0
int dstH = 0
if (requiredAspectRatio < aspectRatio) {
dstW = maxW dstH = Math.round(maxW/aspectRatio)
} else {
dstH = maxH dstW = Math.round(maxH * aspectRatio)
}
BufferedImage bi = new BufferedImage(dstW, dstH, BufferedImage.TYPE_INT_RGB)
Graphics2D g2d = bi.createGraphics() g2d.drawImage(ai, 0, 0, dstW, dstH, null, null)
IIO.write(bi, 'JPEG', out)
}
1
Sử dụng plugin ImageTool. http://grails.org/ImageTools+plugin
+0
Bất kỳ ý tưởng nào nếu nó tương thích với Grails 2? Có cần thiết phải xây dựng bản thân mình từ git hay bản phát hành mới nhất 0.1 cũng hoạt động không? –
12
Trong BuildConfig.groovy
thêm một phụ thuộc vào imgscalr
dependencies {
compile 'org.imgscalr:imgscalr-lib:4.1'
}
hình ảnh Sau đó, thay đổi kích thước trở thành một lớp lót:
BufferedImage thumbnail = Scalr.resize(image, 150);
Các vấn đề liên quan
- 1. UIImageView: Thay đổi kích thước thành kích thước hình ảnh?
- 2. Thay đổi kích thước hình ảnh PNG
- 3. Thay đổi kích thước hình ảnh IFrame
- 4. thay đổi kích thước hình ảnh ckfinder
- 5. Thay đổi kích thước hình ảnh bitmap
- 6. Thay đổi kích thước hình ảnh trong Java để giảm kích thước hình ảnh
- 7. Thay đổi kích thước hình ảnh trong PIL trong Tkinter
- 8. Thay đổi kích thước hình ảnh trong xoay
- 9. Thay đổi kích thước hình ảnh trong VB.NET
- 10. Thay đổi kích thước hình ảnh trong python
- 11. Thay đổi kích thước hình ảnh trong thư mục
- 12. hình ảnh thay đổi kích thước trong Net với Antialiasing
- 13. Thay đổi kích thước hình ảnh trong WPF
- 14. ImageMagick - Thay đổi kích thước hình ảnh thành hình vuông
- 15. Thay đổi kích thước hình ảnh trong UIWebView thành kích thước khung nhìn
- 16. Thay đổi kích thước hình ảnh thành 50% kích thước ban đầu trong HTML
- 17. Hình ảnh không thay đổi kích thước trong hình thức nhập WYGWAM/Safecracker/Kênh Hình ảnh
- 18. thay đổi kích thước hình ảnh và chất lượng PNG
- 19. Thay đổi kích thước hình ảnh bằng django?
- 20. Kích hoạt tải hình ảnh chậm sau khi hình ảnh đã được thay đổi kích thước
- 21. Thay đổi kích thước hình ảnh trên máy chủ
- 22. Thuật toán thay đổi kích thước hình ảnh
- 23. PIL Image.resize() không thay đổi kích thước hình ảnh
- 24. Thay đổi kích thước hình ảnh sử dụng Jcrop
- 25. thay đổi kích thước hình ảnh khi lưu
- 26. Thay đổi kích thước một hình ảnh với stretchableImageWithLeftCapWidth
- 27. thay đổi kích thước hình ảnh từ tập tin
- 28. Thay đổi kích thước hình ảnh bằng Crop
- 29. Thay đổi kích thước hình ảnh cho vừa với Imageview
- 30. Cách thay đổi kích thước hình ảnh UIBarButtonItem
này xoay hình ảnh mặc dù .... câu hỏi – hvgotcodes
@hvgotcodes cũ, nhưng lý do xảy ra là vì hình ảnh không thực sự được quay ở vị trí đầu tiên - nó chỉ có dữ liệu EXIF chỉ thị cho người xem ảnh (như trình duyệt) hiển thị hình ảnh được xoay. Một số máy ảnh (và đặc biệt là điện thoại) làm điều này thay vì thực sự xoay hình ảnh. Vì hình ảnh không thực sự được xoay và các API Java không xem dữ liệu xoay EXIF, hình ảnh kết thúc xuất hiện để được xoay, mặc dù trong thực tế nó không phải. Dưới đây là [ví dụ] (https://gist.github.com/9re/1990019) mã kiểm tra dữ liệu EXIF và xoay theo đó. –