当前位置:网站首页>处理图片类库
处理图片类库
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());
}
}
边栏推荐
- Matplotlib plt Axis() usage
- neo4jDesktop(neo4j桌面版)配置自动启动(开机自启)
- 二、训练fashion_mnist数据集
- With the QQ group file storage function of super nice, you immediately have n cloud disks that are easy to download and never expire
- Voiceprint Technology (I): the past and present life of voiceprint Technology
- Notes on key words in the original English work biography of jobs (V) [chapter three]
- Use Navicat to compare data differences and structure differences of multi environment databases, and automatic DML and DDL scripts
- Socket programming -- epoll model
- Notes on key vocabulary of the original English work biography of jobs (I) [introduction]
- 备战2022年金九银十必问的1000道Android面试题及答案整理,彻底解决面试的烦恼
猜你喜欢

Lvs-dr mode single network segment case

Format analysis and explanation of wav file

A game WP
![[zufe school competition] difficulty classification and competition suggestions of common competitions in the school (taking Zhejiang University of Finance and economics as an example)](/img/ee/2b8aebc1c63902d4d85ff71fd45070.jpg)
[zufe school competition] difficulty classification and competition suggestions of common competitions in the school (taking Zhejiang University of Finance and economics as an example)

The first techo day Tencent technology open day, 628 waiting for you!

jmeter中csv参数化

Oracle one line function Encyclopedia

Webgl Google prompt memory out of bounds (runtimeerror:memory access out of bounds, Firefox prompt index out of bounds)
![[competition -kab micro entrepreneurship competition] KAB National College Students' micro entrepreneurship action participation experience sharing (including the idea of writing the application form)](/img/f3/a8414635ad39ad405864f5fcf66d6d.jpg)
[competition -kab micro entrepreneurship competition] KAB National College Students' micro entrepreneurship action participation experience sharing (including the idea of writing the application form)
![[project part - structure and content writing of technical scheme] software system type mass entrepreneurship and innovation project plan and Xinmiao guochuang (Dachuang) application](/img/4a/1e83ea9e8e79c0ae7244a159943480.jpg)
[project part - structure and content writing of technical scheme] software system type mass entrepreneurship and innovation project plan and Xinmiao guochuang (Dachuang) application
随机推荐
Japanese online notes for postgraduate entrance examination (9): composition template
Close a thread
Online notes on Mathematics for postgraduate entrance examination (8): Kego equations, eigenvalues and eigenvectors, similarity matrix, quadratic series courses
flutter 多语言的intl: ^0.17.0导不进去
在指南针上面开户好不好,安不安全?
富时A50开户什么地方安全
Object. Can defineproperty also listen for array changes?
四、卷积神经网络(Convolution Neural Networks)
compiling stm32f4xx_ it. c... “.\Objects\BH-F407.axf“ - 42 Error(s), 1 Warning(s).
[competition - Rural Revitalization] experience sharing of Zhejiang Rural Revitalization creative competition
Is it safe to open an account with Great Wall Securities by mobile phone?
Compile time annotations for custom annotations (retentionpolicy.class)
SQL高级
关掉一个线程
Oracle one line function Encyclopedia
matplotlib matplotlib中决策边界绘制函数plot_decision_boundary和plt.contourf函数详解
RMB 3000 | record "tbtools" video, make a friend and get a cash prize!
云网络技术的好处以及类型
sklearn 高维数据集制作make_circles 和 make_moons
Jmeter中的断言使用讲解