Java 我可以将1MB图像文件(PNG、JPG、TIFF等)压缩为~1KB的缩略图吗?

Java 我可以将1MB图像文件(PNG、JPG、TIFF等)压缩为~1KB的缩略图吗?,java,amazon-web-services,amazon-s3,thumbnails,image-compression,Java,Amazon Web Services,Amazon S3,Thumbnails,Image Compression,根据我们的项目要求,我们需要保存艺术品(JPG、PNG、TIFF等图像格式的图像),其大小可以从1KB到1MB不等。我们现在将它们存储在AWS S3桶中 关于我们的实施,我有以下几个问题: 将所有图像存储在AWS S3 bucket中是一个好的解决方案吗 我可以直接从AWS S3 bucket中获取所有图像文件的缩略图吗?如果是,我如何获取缩略图 每次上传图像并将字节数组存储在RDBMS中时,我是否可以创建一个缩略图(大小为1KB)?(这只是为了避免从S3 bucket获取图像内容,因为这些缩略

根据我们的项目要求,我们需要保存艺术品(JPG、PNG、TIFF等图像格式的图像),其大小可以从1KB到1MB不等。我们现在将它们存储在AWS S3桶中

关于我们的实施,我有以下几个问题:

  • 将所有图像存储在AWS S3 bucket中是一个好的解决方案吗
  • 我可以直接从AWS S3 bucket中获取所有图像文件的缩略图吗?如果是,我如何获取缩略图
  • 每次上传图像并将字节数组存储在RDBMS中时,我是否可以创建一个缩略图(大小为1KB)?(这只是为了避免从S3 bucket获取图像内容,因为这些缩略图仅用于预览目的)
  • 我可以用java压缩图像吗?如何做到这一点,使我得到最小的字节大小

  • Amazon S3是一项很好的图像存储服务,因为它对存储量没有限制,并且文件可以在互联网上访问(而不必通过应用程序提供)

    AmazonS3没有内置的创建缩略图的功能。当新图像存储在S3桶中时,可以考虑触发AWS lambda函数。见:

    将缩略图存储在AmazonS3中比存储在数据库中效率更高。当创建带有预览图标的HTML页面时,只需指向AmazonS3中的图标图像。然后,用户的浏览器将直接从S3获取图像,而不是您的应用程序必须检索和提供图像

    如果要控制对图像和缩略图的访问,请使用授予对私有对象的时间限制访问权

    创建自己的缩略图的另一种方法是使用缩略图即服务产品之一,例如:


    以上代码对我的需求有点帮助

    谢谢你的快速回复John!
    import java.awt.*;
    import javax.imageio.*;
    import org.imgscalr.Scalr;
    
    void createThumbnailUsingScalr(File sourceImage) throws Exception {
            File destImage =
                    new File("/Path/For/Destination/Thubnail.png");
                BufferedImage img = ImageIO.read(sourceImage);
                BufferedImage thumbImg = Scalr.resize(img, Scalr.Method.QUALITY, Scalr.Mode.AUTOMATIC, 200, 200, Scalr.OP_ANTIALIAS);
                ImageIO.write(thumbImg, "PNG", destImage);
        }