当前位置:网站首页>处理图片类库
处理图片类库
2022-06-25 09:32:00 【String-int】
POM.XML
<!-- https://mvnrepository.com/artifact/net.coobird/thumbnailator -->
<!--处理图片类库-->
<dependency>
<groupId>net.coobird</groupId>
<artifactId>thumbnailator</artifactId>
<version>0.4.14</version>
</dependency>
JAVA
package com.example.demo;
import net.coobird.thumbnailator.Thumbnails;
import net.coobird.thumbnailator.geometry.Positions;
import net.coobird.thumbnailator.name.Rename;
import javax.imageio.ImageIO;
import java.awt.*;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
public class TestImg {
public static void main(String[] args) throws IOException {
//size(宽度, 高度)
/* * 若图片横比200小,高比300小,不变 * 若图片横比200小,高比300大,高缩小到300,图片比例不变 * 若图片横比200大,高比300小,横缩小到200,图片比例不变 * 若图片横比200大,高比300大,图片按比例缩小,横为200或高为300 */
// 场景应用
/** *1.指定大小进行缩放 */
Thumbnails.of("D:\\project\\suining\\processingimgs\\src\\main\\resources\\static\\images/junma.jpg")
.size(200, 300)
.toFile("C:\\Users\\Administrator\\Desktop\\tu/junma.jpg");
// Thumbnails.of("D:\\project\\suining\\processingimgs\\src\\main\\resources\\static\\images/0.1.jpeg")
// .size(2560, 2048)
// .toFile("C:\\Users\\Administrator\\Desktop\\tu/0.1.jpeg");
/** * 2.单个图片等比例缩放 */
// File file = new File("D:\\\\project\\\\suining\\\\processingimgs\\\\src\\\\main\\\\resources\\\\static\\\\images/0.2.jpg");
// // 3.0是一个double类型的数字,缩放比例,大于1就是变大,小于1就是缩小
// Thumbnails.of(new FileInputStream(file)).scale(0.1).toFile(new File("C:\\\\Users\\\\Administrator\\\\Desktop\\\\tu/0.2.jpg"));
/** * 3.不按照比例,指定大小进行缩放 */
//keepAspectRatio(false) 默认是true按照比例缩放的,false不按比例缩放
// Thumbnails.of("D:\\\\project\\\\suining\\\\processingimgs\\\\src\\\\main\\\\resources\\\\static\\\\images/0.4.jpeg")
// .size(200, 300)
// .keepAspectRatio(false)
// .toFile("C:\\\\\\\\Users\\\\\\\\Administrator\\\\\\\\Desktop\\\\\\\\tu/0.4.jpg");
/** * 4.批量产生缩略图 */
//C:\Users\Administrator\Desktop\tu 是要产生缩略图的文件夹,会将文件夹里面的图片生成缩略图,png是图片的格式
Thumbnails.of(new File("C:\\Users\\Administrator\\Desktop\\tu").listFiles()).scale(0.2).outputFormat("jpg")
.toFiles(Rename.PREFIX_DOT_THUMBNAIL);
/** * 5. 控制图片质量,图片尺寸不变 */
// File fromPic =new File("D:\\project\\suining\\processingimgs\\src\\main\\resources\\static\\images/0.5.jpeg");
// File toPic =new File("C:\\Users\\Administrator\\Desktop\\tu/0.5.jpeg");
// //outputQuality就是用来控制图片质量的
// Thumbnails.of(fromPic).scale(1f).outputQuality(0.25f).toFile(toPic);
//
/** * * 失败了!!!!!! * 6.给图片加水印 * fromPic是原图,waterPic是水印图片,toPic是生成后的图片 */
// File fromPic =new File("D:\\project\\suining\\processingimgs\\src\\main\\resources\\static\\images/junma.jpg");
// File waterPic =new File("C:\\Users\\Administrator\\Desktop\\tu/thumbnail.0.4.jpg.png");
// File toPic =new File("C:\\Users\\Administrator\\Desktop\\tu/haha.jpg");
// 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");
/** * 7.旋转图片 */
// File fromPic =new File("D:\\project\\suining\\processingimgs\\src\\main\\resources\\static\\images/junma.jpg");
// File toPic =new File("C:\\Users\\Administrator\\Desktop\\tu/thumbnail.0.4.jpg");
// Thumbnails.of(fromPic).scale(0.5).rotate(90).toFile(toPic);
/** * 图片裁剪 */
// File fromPic =new File("D:\\project\\suining\\processingimgs\\src\\main\\resources\\static\\images/junma.jpg");
// File toPic =new File("C:\\Users\\Administrator\\Desktop\\tu/thumbnail.0.4.jpg");
// Thumbnails.of(fromPic).sourceRegion(Positions.CENTER, 300, 300).scale(1.0).toFile(toPic);
//
// //sourceRegion()
//
// //图片中心400*400的区域
// Thumbnails.of("D:\\project\\suining\\processingimgs\\src\\main\\resources\\static\\images/junma.jpg")
// .sourceRegion(Positions.CENTER, 400,400)
// .size(200, 200)
// .keepAspectRatio(false)
// .toFile("C:\\Users\\Administrator\\Desktop\\tu/a380_region_center.jpg");
//
// //图片右下400*400的区域
// Thumbnails.of("D:\\project\\suining\\processingimgs\\src\\main\\resources\\static\\images/junma.jpg")
// .sourceRegion(Positions.BOTTOM_RIGHT, 400,400)
// .size(200, 200)
// .keepAspectRatio(false)
// .toFile("C:\\Users\\Administrator\\Desktop\\tu/a380_region_bootom_right.jpg");
//
// //指定坐标
// Thumbnails.of("D:\\project\\suining\\processingimgs\\src\\main\\resources\\static\\images/junma.jpg")
// .sourceRegion(600, 500, 400, 400)
// .size(200, 200)
// .keepAspectRatio(false)
// .toFile("C:\\Users\\Administrator\\Desktop\\tu/a380_region_coord.jpg");
// 某些应用上传的图片可能质量比较高,但是用户在列表浏览的时候,又不想原图展示,因为带宽要求较高,
// 此时可以降低图片质量(上面提到的outputQuality),以outputstream输出流的方式response给浏览器去展示
// 缩小scale(0.5)、 质量outputQuality(0.1)
// 缩小0.5,质量0.1,输出图片大小只有6.2KB了,大大加快了web浏览图片的速度
}
}
package com.example.demo;
import net.coobird.thumbnailator.Thumbnails;
import net.coobird.thumbnailator.name.Rename;
import java.io.File;
import java.io.IOException;
public class ThumbnailatorTest {
public static void main(String[] args) throws IOException {
// File directory=new File("C:\\Users\\Administrator\\Desktop\\tu");
// Thumbnails.of(directory.listFiles())
// .size(200, 200)
// .outputFormat("jpeg")
// .asFiles(Rename.PREFIX_DOT_THUMBNAIL);
Thumbnails.of(new File("C:\\Users\\Administrator\\Desktop\\tu").listFiles())
.size(300, 200).keepAspectRatio(false).outputFormat("jpg")
.toFiles(Rename.PREFIX_DOT_THUMBNAIL);
}
}
package com.example.demo;
import com.sun.istack.internal.logging.Logger;
import jdk.management.resource.internal.inst.InitInstrumentation;
import net.coobird.thumbnailator.Thumbnailator;
import net.coobird.thumbnailator.Thumbnails;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.IOException;
@RestController
public class TestController {
@RequestMapping("test")
public void getImg(HttpServletRequest request, HttpServletResponse response) throws IOException {
Thumbnails.of(new File("D:\\project\\suining\\processingimgs\\src\\main\\resources\\static\\images/0.1.jpeg"))
.size(300,200).outputFormat("jpg").toOutputStream(response.getOutputStream());
}
}
边栏推荐
- neo4jDesktop(neo4j桌面版)配置自动启动(开机自启)
- [MySQL] understanding of transactions
- flutter 获取顶部状态栏的高度
- Voiceprint Technology (II): Fundamentals of audio signal processing
- 行业春寒回暖,持续承压的酒店企业于何处破局?
- Analysis on the bottom calling process of micro service calling component ribbon
- 手机办理长城证券开户靠谱安全吗?
- Notes on key vocabulary of the original English work biography of jobs (I) [introduction]
- [project part - structure and content writing of technical scheme] software system type mass entrepreneurship and innovation project plan and Xinmiao guochuang (Dachuang) application
- Voiceprint Technology (I): the past and present life of voiceprint Technology
猜你喜欢
[competition - Rural Revitalization] experience sharing of Zhejiang Rural Revitalization creative competition
Online notes on Mathematics for postgraduate entrance examination (8): Kego equations, eigenvalues and eigenvectors, similarity matrix, quadratic series courses
Japanese online notes for postgraduate entrance examination (9): composition template
[zufe expense reimbursement] zhecai invoice reimbursement specification (taking Xinmiao reimbursement as an example), which can be passed in one trip at most
How to download the school logo, school name and corporate logo on a transparent background without matting
SQL advanced
Lvs-dr mode single network segment case
2022 meisai question a idea sharing
Title B of the certification cup of the pistar cluster in the Ibagu catalog
nodejs 使用Express框架demo
随机推荐
jmeter中csv参数化
[MySQL] understanding and use of indexes
Online notes on Mathematics for postgraduate entrance examination (9): a series of courses on probability theory and mathematical statistics
Atguigu---17-life cycle
Matplotlib plt Axis() usage
Register the jar package as a service to realize automatic startup after startup
compiling stm32f4xx_it.c... “.\Objects\BH-F407.axf“ - 42 Error(s), 1 Warning(s).
matplotlib matplotlib中axvline()和axhline()函数
On the underlying index principle of MySQL
请问在手机上开户股票,还是去证券公司开户安全?
matplotlib matplotlib中plt.grid()
3、 Automatically terminate training
SQL advanced
WebGL谷歌提示内存不够(RuntimeError:memory access out of bounds,火狐提示索引超出界限(RuntimeError:index out of bounds)
Atguigu---01-scaffold
Voiceprint Technology (II): Fundamentals of audio signal processing
Oracle one line function Encyclopedia
2022 meisai question a idea sharing
compiling stm32f4xx_ it. c... “.\Objects\BH-F407.axf“ - 42 Error(s), 1 Warning(s).
Socket programming -- poll model