- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章java Thumbnails 图片处理的使用由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
在后端开发的过程中,都逃不开与文件传输特别是图片的传输打交道,但是因为现在各种拍照设备发展越来越快,拍出的照片更是越来越清晰,但是照片文件的大小也是越来越大了,手机拍照小则2M大则30M这在网络传输过程中谁顶得住呀!所以在用户发布照片,后端对图像文件进行保存的过程中压缩图像文件是必不可少的一个过程。 而Thumbnails就是一个很好的图像处理工具,他把复杂的图像处理封装的很好,只需要短短的一行代码就能完成对图像的压缩.
Thumbnails支持:
Thumbnails导入依赖 。
1
2
3
4
5
|
<
dependency
>
<
groupId
>net.coobird</
groupId
>
<
artifactId
>thumbnailator</
artifactId
>
<
version
>0.4.8</
version
>
</
dependency
>
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
//size(宽度, 高度)
/*
* 若图片横比200小,高比300小,不变
* 若图片横比200小,高比300大,高缩小到300,图片比例不变
* 若图片横比200大,高比300小,横缩小到200,图片比例不变
* 若图片横比200大,高比300大,图片按比例缩小,横为200或高为300
*/
Thumbnails.of(
"images/a380_1280x1024.jpg"
)
.size(
200
,
300
)
.toFile(
"c:/a380_200x300.jpg"
);
Thumbnails.of(
"images/a380_1280x1024.jpg"
)
.size(
2560
,
2048
)
.toFile(
"c:/a380_2560x2048.jpg"
);
|
1
2
3
|
File file =
new
File(
"c:\\test.png"
);
Thumbnails.of(
new
FileInputStream(file)).scale(
3.0
).toFile(
new
File(
"c:\\yyyyy.png"
));
|
3.0是一个double类型的数字,缩放比例,大于1就是变大,小于1就是缩小 。
1
2
3
4
5
|
//keepAspectRatio(false) 默认是按照比例缩放的
Thumbnails.of(
"images/a380_1280x1024.jpg"
)
.size(
200
,
200
)
.keepAspectRatio(
false
)
.toFile(
"c:/a380_200x200.jpg"
);
|
1
2
3
|
Thumbnails.of(
new
File(
"D:\\pics"
).listFiles()).scale(
0.2
).outputFormat(
"png"
)
.toFiles(Rename.PREFIX_DOT_THUMBNAIL);
|
1
2
3
|
File fromPic =
new
File(
"C:\\Users\\Administrator\\Desktop\\IdCardPositive_987136936_1531741954688.jpeg"
);
File toPic =
new
File(
"C:\\Users\\Administrator\\Desktop\\IdCardPositive_987136936_08.jpeg"
);
Thumbnails.of(fromPic).scale(1f).outputQuality(
0
.25f).toFile(toPic);
|
outputQuality就是用来控制图片质量的 。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
Thumbnails.of(fromPic).scale(
0.8
)
.watermark(Positions.BOTTOM_RIGHT, ImageIO.read(waterPic),
0
.5f)
.outputQuality(
0
.8f).toFile(toPic);
//watermark(位置,水印图,透明度)
Thumbnails.of(
"images/a380_1280x1024.jpg"
)
.size(
1280
,
1024
)
.watermark(Positions.BOTTOM_RIGHT, ImageIO.read(
new
File(
"images/watermark.png"
)),
0
.5f)
.outputQuality(
0
.8f)
.toFile(
"c:/a380_watermark_bottom_right.jpg"
);
Thumbnails.of(
"images/a380_1280x1024.jpg"
)
.size(
1280
,
1024
)
.watermark(Positions.CENTER, ImageIO.read(
new
File(
"images/watermark.png"
)),
0
.5f)
.outputQuality(
0
.8f)
.toFile(
"c:/a380_watermark_center.jpg"
);
|
fromPic是原图,waterPic是水印图片,toPic是生成后的图片 。
1
|
Thumbnails.of(fromPic).scale(
0.5
).rotate(
90
).toFile(toPic);
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
Thumbnails.of(fromPic).sourceRegion(Positions.CENTER,
300
,
300
).scale(
1.0
).toFile(toPic);
//sourceRegion()
//图片中心400*400的区域
Thumbnails.of(
"images/a380_1280x1024.jpg"
)
.sourceRegion(Positions.CENTER,
400
,
400
)
.size(
200
,
200
)
.keepAspectRatio(
false
)
.toFile(
"c:/a380_region_center.jpg"
);
//图片右下400*400的区域
Thumbnails.of(
"images/a380_1280x1024.jpg"
)
.sourceRegion(Positions.BOTTOM_RIGHT,
400
,
400
)
.size(
200
,
200
)
.keepAspectRatio(
false
)
.toFile(
"c:/a380_region_bootom_right.jpg"
);
//指定坐标
Thumbnails.of(
"images/a380_1280x1024.jpg"
)
.sourceRegion(
600
,
500
,
400
,
400
)
.size(
200
,
200
)
.keepAspectRatio(
false
)
.toFile(
"c:/a380_region_coord.jpg"
);
|
某些应用上传的图片可能质量比较高,但是用户在列表浏览的时候,又不想原图展示,因为带宽要求较高,此时可以降低图片质量(上面提到的outputQuality),以outputstream输出流的方式response给浏览器去展示 。
1
2
3
4
5
6
7
|
@RequestMapping
(
"/getImages"
)
public
void
getImages(HttpServletRequest request, HttpServletResponse response)
throws
IOException {
Thumbnails.of(
"images/a380_1280x1024.jpg"
).
scale(1f).
outputQuality(
0
.5f).
outputFormat(
"jpg"
).toOutputStream(response.getOutputStream());
}
|
1
2
3
4
5
6
7
8
9
10
|
//outputFormat(图像格式)
Thumbnails.of(
"images/a380_1280x1024.jpg"
)
.size(
1280
,
1024
)
.outputFormat(
"png"
)
.toFile(
"c:/a380_1280x1024.png"
);
Thumbnails.of(
"images/a380_1280x1024.jpg"
)
.size(
1280
,
1024
)
.outputFormat(
"gif"
)
.toFile(
"c:/a380_1280x1024.gif"
);
|
1
2
3
4
5
6
|
//asBufferedImage() 返回BufferedImage
BufferedImage thumbnail = Thumbnails.of(
"images/a380_1280x1024.jpg"
)
.size(
1280
,
1024
)
.asBufferedImage();
ImageIO.write(thumbnail,
"jpg"
,
new
File(
"c:/a380_1280x1024_BufferedImage.jpg"
));
|
1
2
3
4
5
|
ByteArrayOutputStream thumbnailOutputStream =
new
ByteArrayOutputStream();
Thumbnails.of(
"images/a380_1280x1024.jpg"
).
scale(1f).
outputQuality(
0
.5f).
outputFormat(
"jpg"
).toOutputStream(thumbnailOutputStream);
|
1
2
3
4
5
6
|
ByteArrayOutputStream thumbnailOutputStream =
new
ByteArrayOutputStream();
Thumbnails.of(
"images/a380_1280x1024.jpg"
).
scale(1f).
outputQuality(
0
.5f).
outputFormat(
"jpg"
).toOutputStream(thumbnailOutputStream);
ByteArrayInputStream byteArrayInputStream =
new
ByteArrayInputStream(thumbnailOutputStream.toByteArray());
|
1
2
3
4
5
6
|
ByteArrayOutputStream handlerOutputStream =
new
ByteArrayOutputStream();
Thumbnails.of(inputStream).
scale(1f).
outputQuality(
0
.25f).
outputFormat(
"jpg"
).toOutputStream(handlerOutputStream);
byte
[] bytes = handlerOutputStream.toByteArray();
|
到此这篇关于java Thumbnails 图片处理的使用的文章就介绍到这了,更多相关java Thumbnails 图片处理 内容请搜索我以前的文章或继续浏览下面的相关文章希望大家以后多多支持我! 。
原文链接:https://blog.csdn.net/echizao1839/article/details/114023405 。
最后此篇关于java Thumbnails 图片处理的使用的文章就讲到这里了,如果你想了解更多关于java Thumbnails 图片处理的使用的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我正在开发一个使用两个单独的模块化 Django 应用程序的项目。但是,一个应用程序需要简单的缩略图,而另一个需要 sorl-thumbnails。不幸的是,这两个缩略图库使用了模板标签语法 {%
我需要在页面上列出缩略图,所有缩略图都具有固定的高度和宽度。一旦我悬停其中任何一个,我希望较大的图像显示在固定位置,即 top:50px 和 left:50px 在其包装内。大图的尺寸也是固定的,即宽
我目前正在使用 blobstore 为图像生成缩略图,但是,我喜欢将缩略图的尺寸存储在 img 标签中,因为这是一种很好的做法,有助于加快渲染和使部分加载的页面看起来更漂亮。 如果只知道原始图像的尺寸
我正在使用 Dmcloud java Api 将视频上传到 dmcloud.but theres api 没有提供有关如何获取特定视频缩略图的太多信息。 我可以获得流 url 下载 url 和 evr
我在 Elastic Beanstalk 上使用 Django 和 easy_thumbnails 时遇到一些问题,我不太确定出了什么问题...问题如下: 我正在使用 easy_thumbnails
我确实有一个来自 wikimedia commons 的文件名,我想直接访问缩略图。 示例: Tour_Eiffel_Wikimedia_Commons.jpg 我找到了一种方法来获取包含我想要的缩略
使用响应式文件管理器 9.11.3缩略图在对话框窗口 (GUI) 中不显示/空白。在 ftp 缩略图中可以创建成功。文件夹“thumbs”权限 755 文件权限 644。我更改为 755 仍然没有出现
如何在 fotorama 中始终显示缩略图?有一个只有一张图片的画廊,我也想显示缩略图,只有在有两张或更多图片时才会显示。 最佳答案 使用enableifsingleframe标志: 关于
我尝试过 django-filer 在单个文件字段中选择多个文件,只是我尝试了我的简单模型,但我面临着这个模板错误。我刚刚在 django admin 中使用了一个简单的模型。请你帮助我好吗? cla
我正在尝试开发一些“特色帖子”。当您 mouseover() 它们时,我希望它们发生变化。我想这将通过 jQuery 完成,我试着开始,但我对它很烂所以我想我会在这里问。 我想出了这个 jQuery
在后端开发的过程中,都逃不开与文件传输特别是图片的传输打交道,但是因为现在各种拍照设备发展越来越快,拍出的照片更是越来越清晰,但是照片文件的大小也是越来越大了,手机拍照小则2M大则30M这在网络传输
我们有一个网站,允许用户上传文档(word、pdf、PPT等)。我们正在将文件上传到 Amazon S3。因此,所有文件都将拥有自己的网址。 对于这些上传的文档,我们希望生成缩略图。此缩略图需要根据其
我的 django 网站中有很多大图像,我使用 sorl-thumbnail 来压缩页面加载。因为有很多大图像,有时我的页面第一次加载需要很长时间——甚至有时会导致 nginx 超时。我能做些什么来防
我记得有一个关于 sorl-thumbnail future 的讨论大变化即将来临;现在那个页面不见了......我很高兴该项目仍在积极维护中,但我在文档中找不到任何提及向后兼容性问题的内容。 那么,
伙计们,我想知道 sorl-thumbnail 是否有任何选项可以从底部到顶部裁剪...我有一个垃圾问题,在某些图片中 sorl-thumbnail 正在裁剪图片中人的头部。 谢谢 最佳答案 我刚刚发
我首先尝试存储和使用 API 返回的链接,但它会在很短的时间内过期。然后我尝试将图像下载并存储在本地(并从我的服务器提供);但是当我没有使用我的帐户登录时,缩略图链接会引发 404 错误(尽管文档是完
SORL 缩略图出现问题并在文件被覆盖时删除缩略图文件或刷新缩略图。场景是我有一个文件,每个条目总是相同但可以被覆盖。需要在上传新文件并覆盖旧文件时重新创建缩略图。 这是在模型 + 表单级别,所以我使
在我的模型上使用 sorl-thumbnail v11.01 和 ImageField 是否有一种简单的方法可以在保存之前调整上传文件的大小(以避免保存大量图像,以防已上传)?提前致谢。 最佳答案 结
我对thumbor 很陌生,但我想知道是否可以使用我还不知道的特定选项来“放大”图像。 下面的简单示例: 到目前为止,我所理解的可能是,这可能意味着调整到特定区域的大小。但是我缺乏找到正确选项的经验(
HTC incredible,没有 SD 卡只有内存。我的应用程序使用 MediaStore.Images.Thumbnails.getThumbail() 来检索图像缩略图。查看代码,Thumbna
我是一名优秀的程序员,十分优秀!