자바 코드 로 그림 크기 조정
4294 단어 자바
/**
*
* @param srcFileName
* @param tagFileName
* @param width
* @param height
*/
public static void updateImageSize(String srcFileName, String tagFileName,
int width, int height) {
// TODO Auto-generated method stub
try {
BufferedImage bi = ImageIO.read(new File(srcFileName));
BufferedImage tag =
new BufferedImage(width,height, BufferedImage.TYPE_INT_RGB);
tag.getGraphics().drawImage(bi, 0, 0, width, height, null);
ImageIO.write(tag, "jpg", new File(tagFileName));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
아래 의 이 코드 는 saveImageAsJpg()방법 을 호출 합 니 다!위의 resize()가 saveImageAsJpg()에 호출 되 었 으 니 하나만 조정 하면 됩 니 다!아래 의 방법 을 사용 하면 확대 해서 나 온 그림 이 위의 것 보다 선명 해 야 합 니 다.구체 적 인 원인 은 저도 잘 모 르 겠 습 니 다.저도 인터넷 에서 찾 은 것 입 니 다.그리고 하나씩 시험 해 본 다음 에 여러분 과 공유 하 겠 습 니 다.만약 에 원인 을 아 는 것 이 있 으 면 저희 에 게 말씀 해 주세요.같이 발전 하 겠 습 니 다.
/**
*
* @param source
* @param targetW
* @param targetH
* @return
*/
public static BufferedImage resize(BufferedImage source, int targetW, int targetH) {
// targetW,targetH
int type = source.getType();
BufferedImage target = null;
double sx = (double) targetW / source.getWidth();
double sy = (double) targetH / source.getHeight();
// targetW,targetH 。
// if else
if(sx>sy) {
sx = sy;
targetW = (int)(sx * source.getWidth());
} else {
sy = sx;
targetH = (int)(sy * source.getHeight());
}
if (type == BufferedImage.TYPE_CUSTOM) { //handmade
ColorModel cm = source.getColorModel();
WritableRaster raster = cm.createCompatibleWritableRaster(targetW, targetH);
boolean alphaPremultiplied = cm.isAlphaPremultiplied();
target = new BufferedImage(cm, raster, alphaPremultiplied, null);
} else {
target = new BufferedImage(targetW, targetH, type);
}
Graphics2D g = target.createGraphics();
//smoother than exlax:
g.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY );
g.drawRenderedImage(source, AffineTransform.getScaleInstance(sx, sy));
g.dispose();
return target;
}
/**
*
* @param fromFileStr
* @param saveToFileStr
* @param width
* @param height
* @throws Exception
*/
public static void saveImageAsJpg (String fromFileStr,String saveToFileStr,int width,int height)
throws Exception {
BufferedImage srcImage;
// String ex = fromFileStr.substring(fromFileStr.indexOf("."),fromFileStr.length());
String imgType = "JPEG";
if (fromFileStr.toLowerCase().endsWith(".png")) {
imgType = "PNG";
}
// System.out.println(ex);
File saveFile=new File(saveToFileStr);
File fromFile=new File(fromFileStr);
srcImage = ImageIO.read(fromFile);
if(width > 0 || height > 0) {
srcImage = resize(srcImage, width, height);
}
ImageIO.write(srcImage, imgType, saveFile);
}
더 좋 은 방법 이 있 으 신 분 들 은 여러분 과 나 눠 드 리 겠 습 니 다.6 군 은 먼저 감 사 드 립 니 다!사실 저 는 제일 먼저 PDF 를 그림 으로 바 꾸 고 싶 었 는데 잘 모 르 겠 어 요.jar 가방 도 써 야 돼 요!그리고 PDF 는 한 페이지 만 괜 찮 습 니 다.한 장의 그림 이 나 왔 지만 페이지 가 많 으 면 돌아 온 그림 이 많 습 니 다!나 도 좋 은 방법 이 없 기 때문에 가 는 김 에 물 어보 세 요.어떻게 PDF 에서 나 오 는 그림 을 PDF 가 몇 페이지 가 있 든 지 간 에 그림 은 한 장 입 니 다!jar 가방 을 사용 하지 않 는 것 이 가장 좋 습 니 다.하지만 솔직히 jar 가방 도 좋 은 물건 입 니 다.이런 효과 가 좋 은 jar 가방 이 있다 면 추천 해 주세요.감사합니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Is Eclipse IDE dying?In 2014 the Eclipse IDE is the leading development environment for Java with a market share of approximately 65%. but ac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.