1
Java JAI (Java Advance Imaging) API를 사용하여 JPEG 이미지의 해상도를 1024x800에서 512x400으로 변경하는 데 어려움이 있습니다.JAI JPEG 해상도 변경
API를 가지고 놀고 스트림이나 java.lang.OutOfMemory
예외가 계속 발생했습니다.
실례가있는 사용자. 여기
Java JAI (Java Advance Imaging) API를 사용하여 JPEG 이미지의 해상도를 1024x800에서 512x400으로 변경하는 데 어려움이 있습니다.JAI JPEG 해상도 변경
API를 가지고 놀고 스트림이나 java.lang.OutOfMemory
예외가 계속 발생했습니다.
실례가있는 사용자. 여기
그것은, 어떠한 보증 :
다음BufferedImage scaleImage(BufferedImage sourceImage, int scaledWidth) {
float scale = scaledWidth/(float) sourceImage.getWidth();
int scaledHeight = (int) (sourceImage.getHeight() * scale);
Image scaledImage = sourceImage.getScaledInstance(
scaledWidth,
scaledHeight,
Image.SCALE_AREA_AVERAGING
);
BufferedImage bufferedImage = new BufferedImage(
scaledImage.getWidth(null),
scaledImage.getHeight(null),
BufferedImage.TYPE_INT_RGB
);
Graphics g = bufferedImage.createGraphics();
g.drawImage(scaledImage, 0, 0, null);
g.dispose();
return bufferedImage;
}
하나 JAI
public void resize(String filename, RenderedOp image, double wScale, double hScale)
{
// now resize the image
ParameterBlock pb = new ParameterBlock();
pb.addSource(image); // The source image
pb.add(wScale); // The xScale
pb.add(hScale); // The yScale
pb.add(0.0F); // The x translation
pb.add(0.0F); // The y translation
RenderingHints hints = new RenderingHints(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);
RenderedOp resizedImage = JAI.create("SubsampleAverage", pb, hints);
// lastly, write the newly-resized image to an
// output stream, in a specific encoding
try
{
FileOutputStream fos = new FileOutputStream(new File(filename));
JAI.create("encode", resizedImage, fos, getImageType(filename), null);
}
catch (FileNotFoundException e)
{
}
}
이 AWT 인을 사용하고 함께 "있는 그대로"제공, 작업 예를 들어, 안 그래? – Jesse
아, 버거, 니 말이 맞아. 나는 대답을 지우 겠지만 이미 받아 들여졌다. 나는 대신 너를 상향 줄 것이다. – skaffman