Jeg har i mellemtiden fået loadet et billede fra en url og fået reduceret filstørrelsen drastisk. Jeg brugte bla. JAI (Java Advanced Imaging).
Min egen metode understøtter png, det gør denne ikke.
Dine metoder reducerer dog filstørrelsen kraftigt og det er godt. Farverne ser dog
lidt sjove ud i det endelige billede.
Prøv at loade flg billede ind fra den url via JAI:
url = new URL("
http://www.trafikken.dk/webcam/webcam1.jpg");
RenderedOp image = JAI.create("url", url);
BufferedImage bi=image.getAsBufferedImage();
prøv så at kalde dine metoder med flg paramettre:
BufferedImage newImage=scaleImage(bi,0.5f); // for en skalering der svarer til det halve (det er det jeg skal bruge)
saveImageAsJPG(newImage, "testimage", "C:", 0.5f);
Jeg har prøvet forskellige parametre i den sidste metode.
Hvis du vil, så prøv min metode:
public class imageprocessor {
public static void main(String[] args) {
URL url;
try {
url = new URL("
http://www.trafikken.dk/webcam/webcam1.jpg");
RenderedImage image = JAI.create("url", url);
Vector sources=new Vector();
sources.addElement(image);
RenderableImage r = new MultiResolutionRenderableImage(sources,0.3F,0.3F,1.0F);
// scaling
float edgeLength=50.0F;
int height=100;
int width=100;
boolean tall = (height > width);
float modifier = edgeLength / (float) (tall ? height : width);
ParameterBlock params = new ParameterBlock();
params.addSource(image);
params.add(modifier);//x scale factor
params.add(modifier);//y scale factor
params.add(0.0F);//x translate
params.add(0.0F);//y translate
params.add(new InterpolationNearest());//interpolation method
RenderedOp result = JAI.create("scale", params);
ColorCube colorMap=ColorCube.BYTE_496;
KernelJAI[] ditherMask = KernelJAI.DITHER_MASK_443;
ParameterBlock pb = new ParameterBlock();
pb.addSource(result).add(colorMap).add(ditherMask);
ColorModel cm=result.getColorModel();
ImageLayout layout = new ImageLayout();
layout.setTileWidth(100).setTileHeight(100);
layout.setColorModel(cm);
RenderingHints rh = new RenderingHints(JAI.KEY_IMAGE_LAYOUT, layout);
PlanarImage img= (PlanarImage)JAI.create("ordereddither",pb);
String filename = "C:/importedpic.png";
String format = "PNG";
RenderedOp opImage = JAI.create("filestore", img,filename, format);
} catch (MalformedURLException e) {
System.out.println(e.getMessage());
e.printStackTrace();
}
}
}
Dit billede fylder mindre, men er meget rødt og mørkt...