자바 이미지 모자이크 처리
3233 단어 기초 지식
package com.fh.util;
import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileOutputStream;
import javax.imageio.ImageIO;
import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGEncodeParam;
import com.sun.image.codec.jpeg.JPEGImageEncoder;
/**
*
* @param source ( :F:/images/6.jpg)
* @param imageType ( :jpg)
* @param size ,
* @return
*/
public class Mosaic {
public static String markImageByMosaic(String source){
String result = null;
int size = 40; //
try{
File file = new File(source);
String fileName = file.getName();//
String s[] = fileName.split("\\.");
String imageType = s[1];
BufferedImage img = ImageIO.read(file); //
int width = img.getWidth(null); //
int height = img.getHeight(null); //
BufferedImage mosaic = new BufferedImage(width,height, BufferedImage.TYPE_INT_RGB);
//
if (width < size || height < size) {
return " ";
}
if(size<=0){
return " ";
}
int xcount = 0; //x
int ycount = 0; //y
if (width % size == 0) {
xcount = width / size;
} else {
xcount = width / size + 1;
}
if (height % size == 0) {
ycount = height / size;
} else {
ycount = height / size + 1;
}
int x = 0; //x
int y = 0; //y
// ( )
Graphics2D g = mosaic.createGraphics();
for (int i = 0; i < xcount; i++) {
for (int j = 0; j < ycount; j++) {
//
int mwidth = size;
int mheight = size;
if(i==xcount-1){ // size
mwidth = width-x;
}
if(j == ycount-1){ // size
mheight = height-y;
}
// RGB
int centerX = x;
int centerY = y;
if (mwidth % 2 == 0) {
centerX += mwidth / 2;
} else {
centerX += (mwidth - 1) / 2;
}
if (mheight % 2 == 0) {
centerY += mheight / 2;
} else {
centerY += (mheight - 1) / 2;
}
Color color = new Color(img.getRGB(centerX, centerY));
g.setColor(color);
g.fillRect(x, y, mwidth, mheight);
y = y + size;// y
}
y = 0;// y
x = x + size;// x
}
//
g.dispose();
File sf = new File(source);
ImageIO.write(mosaic, imageType, sf); //
result = " ";
}catch(Exception e){
e.printStackTrace();
}
return result;
}
public static void main(String[] args){
/* String source = "F:/Tomcat/webapps/AMBER/uploadFiles/uploadImg/456.jpg";
Mosaic.markImageByMosaic(source);*/
}
}
글 전재 출처:https://blog.csdn.net/cnsd_liuliu/article/details/52450585
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Openssh 원격 연결 서버Openssh 원격 연결 서버 SSH(Secure Shell) 버전 정보 SSH2 작동 메커니즘 서버 sshd Ubuntu 설치 & 시작 CentOS 업데이트 & 시작 sshd가 프로세스에 있는지 확인 ssh 버전 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.