「java图片圆形裁剪」裁剪图片 圆形
今天给各位分享java图片圆形裁剪的知识,其中也会对裁剪图片 圆形进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
如何在Java中进行图片剪裁 疯狂JAVA
package test;
import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.geom.AffineTransform;
import java.awt.image.AffineTransformOp;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.nio.Buffer;
import javax.imageio.ImageIO;
import javax.imageio.stream.ImageOutputStream;
/**
* 裁剪、缩放图片工具类
*
* @author CSDN 没有梦想-何必远方
*/
public class ImgUtils {
/**
* 缩放图片方法
*
* @param srcImageFile
* 要缩放的图片路径
* @param result
* 缩放后的图片路径
* @param height
* 目标高度像素
* @param width
* 目标宽度像素
* @param bb
* 是否补白
*/
public final static void scale(String srcImageFile, String result,
int height, int width, boolean bb) {
try {
double ratio = 0.0; // 缩放比例
File f = new File(srcImageFile);
BufferedImage bi = ImageIO.read(f);
Image itemp = bi.getScaledInstance(width, height, bi.SCALE_SMOOTH);// bi.SCALE_SMOOTH
// 选择图像平滑度比缩放速度具有更高优先级的图像缩放算法。
// 计算比例
if ((bi.getHeight() height) || (bi.getWidth() width)) {
double ratioHeight = (new Integer(height)).doubleValue()
/ bi.getHeight();
double ratioWhidth = (new Integer(width)).doubleValue()
/ bi.getWidth();
if (ratioHeight ratioWhidth) {
ratio = ratioHeight;
} else {
ratio = ratioWhidth;
}
AffineTransformOp op = new AffineTransformOp(AffineTransform// 仿射转换
.getScaleInstance(ratio, ratio), null);// 返回表示剪切变换的变换
itemp = op.filter(bi, null);// 转换源 BufferedImage 并将结果存储在目标
// BufferedImage 中。
}
if (bb) {// 补白
BufferedImage image = new BufferedImage(width, height,
BufferedImage.TYPE_INT_RGB);// 构造一个类型为预定义图像类型之一的
// BufferedImage。
Graphics2D g = image.createGraphics();// 创建一个
// Graphics2D,可以将它绘制到此
// BufferedImage 中。
g.setColor(Color.white);// 控制颜色
g.fillRect(0, 0, width, height);// 使用 Graphics2D 上下文的设置,填充 Shape
// 的内部区域。
if (width == itemp.getWidth(null))
g.drawImage(itemp, 0, (height - itemp.getHeight(null)) / 2,
itemp.getWidth(null), itemp.getHeight(null),
Color.white, null);
else
g.drawImage(itemp, (width - itemp.getWidth(null)) / 2, 0,
itemp.getWidth(null), itemp.getHeight(null),
Color.white, null);
g.dispose();
itemp = image;
}
ImageIO.write((BufferedImage) itemp, "JPEG", new File(result)); // 输出压缩图片
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 裁剪图片方法
*
* @param bufferedImage
* 图像源
* @param startX
* 裁剪开始x坐标
* @param startY
* 裁剪开始y坐标
* @param endX
* 裁剪结束x坐标
* @param endY
* 裁剪结束y坐标
* @return
*/
public static BufferedImage cropImage(BufferedImage bufferedImage,
int startX, int startY, int endX, int endY) {
int width = bufferedImage.getWidth();
int height = bufferedImage.getHeight();
if (startX == -1) {
startX = 0;
}
if (startY == -1) {
startY = 0;
}
if (endX == -1) {
endX = width - 1;
}
if (endY == -1) {
endY = height - 1;
}
BufferedImage result = new BufferedImage(endX - startX, endY - startY,
4);
for (int x = startX; x endX; ++x) {
for (int y = startY; y endY; ++y) {
int rgb = bufferedImage.getRGB(x, y);
result.setRGB(x - startX, y - startY, rgb);
}
}
return result;
}
public static void main(String[] args) throws IOException {
File input = new File("input.jpg");
BufferedImage img = ImageIO.read(input);
cropImage(img, 10, 10, 20, 20);
File output = new File("output.jpg");
ImageIO.write(img, "jpg", output);
}
}
JAVA怎么把图片处理成圆形
程序中是没有圆形的,都是按坐标放的,圆形其实是一张正方形的图,四边是透明,
java中使用setClip()裁剪不规则图形
GeneralPath path = new GeneralPath();
path.moveTo(x1, y1);
path.lineTo(x2, y2);
path.lineTo(x3, y3);
path.closePath();
g.setClip(path);
可以通过这个设置
关于java图片圆形裁剪和裁剪图片 圆形的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
发布于:2022-12-17,除非注明,否则均为
原创文章,转载请注明出处。