当前位置: 首页 > 面试题库 >

如何提高g.drawImage()方法的性能以调整图像大小

弓嘉纳
2023-03-14
问题内容

我有一个应用程序,用户可以上传相册中的图片,但是自然需要调整上传图片的大小,因此也有可用的拇指并且显示的图片也适合页面(例如800x600)。我调整大小的方式是这样的:

Image scaledImage = img.getScaledInstance((int)width, (int)height, Image.SCALE_SMOOTH);
BufferedImage imageBuff = new BufferedImage((int)width, (int)height, BufferedImage.TYPE_INT_RGB);
Graphics g = imageBuff.createGraphics();
g.drawImage(scaledImage, 0, 0, new Color(0,0,0), null);
g.dispose();

而且效果还不错。我唯一的问题是该g.drawImage()方法似乎非常慢,并且我无法想象用户足够耐心地等待20 * 10秒〜3分钟的时间上传20张图片。实际上,在我的计算机上,为单张图片进行3种不同的尺寸调整大约需要40秒。

这还不够好,我正在寻找更快的解决方案。我想知道是否有人可以通过调用Shell脚本,命令告诉我有关Java或Java更好的一个信息,无论您知道什么黑客,它都必须更快,其他所有内容这次都无关紧要。


问题答案:

您可以使用的ImageMagick来创建缩略图。

convert -define jpeg:size=500x180  hatching_orig.jpg  -auto-orient \
        -thumbnail 250x90   -unsharp 0x.5  thumbnail.gif

要从Java使用它,您可以尝试JMagick,它为ImageMagick提供了Java(JNI)接口。或者,您可以直接使用Runtime.exec或直接调用ImageMagick命令ProcessBuilder



 类似资料:
  • 问题内容: 我在这里使用Go调整大小包:https://github.com/nfnt/resize 我正在从S3中提取图像,如下所示: // this gives me data []byte 之后,我需要调整图像大小: // problem is that the original_image has to be of type image.Image 将图像上传到我的S3存储桶 // pro

  • 问题内容: 我一直在搜索google,只遇到过降低高度/宽度或通过CoreImage如何编辑UIImage外观的库。但是我还没有看到或找到一个库,这篇文章解释了如何减小图像大小,因此在上载时,它不是完整的图像大小。 到目前为止,我有这个: 并且正在发送12MB的照片。如何将其减小到1mb?谢谢! 问题答案: Xcode 9•Swift 4或更高版本 编辑/更新:对于iOS10 +,我们可以使用UI

  • 问题内容: 我正在尝试从目录加载图像并将其作为图标放置在中。但是,当图像尺寸很大时,就不能完全放入标签中。我尝试调整图像的大小以适合标签,但无法正常工作。我可以知道我要去哪里了吗? 问题答案: BufferedImage img = ImageIO.read(…); Image scaled = img.getScaledInstance(500, 500, Image.SCALE_SMOOTH)

  • 问题内容: 我的图片尺寸会很大,我想使用jQuery缩小图片,同时保持比例不变,即长宽比相同。 有人可以指出一些代码或解释其逻辑吗? 问题答案: 看看来自的这段代码

  • 我有一个尺寸为800x800的图像,其大小为170 kb。我想将此图像调整为600x600。调整大小后,我希望缩小图像大小。我该怎么做?

  • 问题内容: 我需要调整PNG,JPEG和GIF文件的大小。如何使用Java做到这一点? 问题答案: 加载图像后,你可以尝试: