package test;
import javaawtColor;
import javaawtGraphics2D;
import javaawtImage;
import javaawtgeomAffineTransform;
import javaawtimageAffineTransformOp;
import javaawtimageBufferedImage;
import javaioFile;
import javaioIOException;
import javanioBuffer;
import javaximageioImageIO;
import javaximageiostreamImageOutputStream;
/
裁剪、缩放工具类
@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 = 00; // 缩放比例
File f = new File(srcImageFile);
BufferedImage bi = ImageIOread(f);
Image itemp = bigetScaledInstance(width, height, biSCALE_SMOOTH);// biSCALE_SMOOTH
// 选择图像平滑度比缩放速度具有更高优先级的图像缩放算法。
// 计算比例
if ((bigetHeight() > height) || (bigetWidth() > width)) {
double ratioHeight = (new Integer(height))doubleValue()
/ bigetHeight();
double ratioWhidth = (new Integer(width))doubleValue()
/ bigetWidth();
if (ratioHeight > ratioWhidth) {
ratio = ratioHeight;
} else {
ratio = ratioWhidth;
}
AffineTransformOp op = new AffineTransformOp(AffineTransform// 仿射转换
getScaleInstance(ratio, ratio), null);// 返回表示剪切变换的变换
itemp = opfilter(bi, null);// 转换源 BufferedImage 并将结果存储在目标
// BufferedImage 中。
}
if (bb) {// 补白
BufferedImage image = new BufferedImage(width, height,
BufferedImageTYPE_INT_RGB);// 构造一个类型为预定义图像类型之一的
// BufferedImage。
Graphics2D g = imagecreateGraphics();// 创建一个
// Graphics2D,可以将它绘制到此
// BufferedImage 中。
gsetColor(Colorwhite);// 控制颜色
gfillRect(0, 0, width, height);// 使用 Graphics2D 上下文的设置,填充 Shape
// 的内部区域。
if (width == itempgetWidth(null))
gdrawImage(itemp, 0, (height - itempgetHeight(null)) / 2,
itempgetWidth(null), itempgetHeight(null),
Colorwhite, null);
else
gdrawImage(itemp, (width - itempgetWidth(null)) / 2, 0,
itempgetWidth(null), itempgetHeight(null),
Colorwhite, null);
gdispose();
itemp = image;
}
ImageIOwrite((BufferedImage) itemp, "JPEG", new File(result)); // 输出压缩
} catch (IOException e) {
eprintStackTrace();
}
}
/
裁剪方法
@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 = bufferedImagegetWidth();
int height = bufferedImagegetHeight();
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 = bufferedImagegetRGB(x, y);
resultsetRGB(x - startX, y - startY, rgb);
}
}
return result;
}
public static void main(String[] args) throws IOException {
File input = new File("inputjpg");
BufferedImage img = ImageIOread(input);
cropImage(img, 10, 10, 20, 20);
File output = new File("outputjpg");
ImageIOwrite(img, "jpg", output);
}
}
autojs生成一张纯色 *** 作步骤如下。
1、先在手机上截一张全屏的,可以用图色助手直接获取到。
2、获取到后,在图色助手中获取到裁剪的两个坐标。
3、在autoJs项目中写裁图的代码,获取裁剪后的。
4、二值化处理裁剪后的保存即可。
给你说个方法吧,你自己去做吧!
先吧转换成bitmap(这个你应该会吧)
取出所有的像素点的信息,存储。获取裁剪的左上坐标和裁剪的小。
按坐标信息和大小从像素集合取点,放到一个新的bitmap里。
完成后导出新
不会hi我!
以上就是关于如何在Java中进行图片剪裁 疯狂JAVA全部的内容,包括:如何在Java中进行图片剪裁 疯狂JAVA、autojs怎么生成一张纯色图片、急求高手 C#图片裁剪实例等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)