如何在Java中进行图片剪裁 疯狂JAVA

如何在Java中进行图片剪裁 疯狂JAVA,第1张

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#图片裁剪实例等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9873451.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存