вот ещё на пробу, но там не присут. афинные преобразования :trash:
есть здесь:
Ссылка скрыта от гостей
и тут:
Ссылка скрыта от гостей
тест на основе ниже
отличие заметно (для типов интерполяции)
<div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">Код</div></div><div class="sp-body"><div class="sp-content"><!--shcode--><pre><code class='java'>import java.awt.*;
import java.awt.image.*;
import java.io.*;
import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGEncodeParam;
import com.sun.image.codec.jpeg.JPEGImageEncoder;
public class ThumbnailGenerator {
public ThumbnailGenerator() {
}
public static void transform(String originalFile, String thumbnailFile,
int thumbWidth, int thumbHeight, float quality) throws Exception {
Image image = javax.imageio.ImageIO.read(new File(originalFile));
double thumbRatio = (double) thumbWidth / (double) thumbHeight;
int imageWidth = image.getWidth(null);
int imageHeight = image.getHeight(null);
double imageRatio = (double) imageWidth / (double) imageHeight;
if (thumbRatio < imageRatio) {
thumbHeight = (int) (thumbWidth / imageRatio);
} else {
thumbWidth = (int) (thumbHeight * imageRatio);
}
if (imageWidth < thumbWidth && imageHeight < thumbHeight) {
thumbWidth = imageWidth;
thumbHeight = imageHeight;
} else if (imageWidth < thumbWidth)
thumbWidth = imageWidth;
else if (imageHeight < thumbHeight)
thumbHeight = imageHeight;
BufferedImage thumbImage = new BufferedImage(thumbWidth, thumbHeight,
BufferedImage.TYPE_INT_RGB);
Graphics2D graphics2D = thumbImage.createGraphics();
graphics2D.setBackground(Color.WHITE);
graphics2D.setPaint(Color.WHITE);
graphics2D.fillRect(0, 0, thumbWidth, thumbHeight);
graphics2D.setRenderingHint(RenderingHints.KEY_INTERPOLATION,
//RenderingHints.VALUE_INTERPOLATION_NEAREST_NEIGHBOR);
RenderingHints.VALUE_INTERPOLATION_BICUBIC);
graphics2D.drawImage(image, 0, 0, thumbWidth, thumbHeight, null);
// javax.imageio.ImageIO.write(thumbImage, "JPG", new
// File(thumbnailFile));
FileOutputStream out = new FileOutputStream(thumbnailFile);
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam(thumbImage);
param.setQuality(quality, false);
encoder.encode(thumbImage, param);
out.close();
}
public static void main(String args[]) throws IOException {
if (args.length == 0) {
System.err.println(
"Provide image name on command line");
System.exit(-1);
}
String fileName = args[0];
try {
transform(fileName, fileName.replaceFirst("\\.", "_new."), 300,
300, 1f);
} catch (Exception e) {
e.printStackTrace();
}
}
}[/CODE]