0

左右に 90 度回転して画像を作成しようとしています。

ただし、何らかの理由で、このプロセスの出力は破損します。

ここに私のコードがあります
:

void rotate(File file){
    def image = ImageIO.read(file);
    double theta  = Math.PI / 2;
    def w = image.width / 2;
    def h = image.height / 2;

    def transform = new AffineTransform();
    transform.rotate(theta, h, w);
    def op = new AffineTransformOp(transform, AffineTransformOp.TYPE_BILINEAR);
    image = op.filter(image, null);

    def name = file.getName();
    def type = name.substring(name.lastIndexOf(".") + 1, name.length());
    ImageIO.write(image,type,file);
}

オリジナル: ここに画像の説明を入力

回転:ここに画像の説明を入力

4

2 に答える 2

1

filter()メソッドにはsrcとが必要ですが、これらdst BufferedImageは異なる必要があります。

Image image = null;
try {
    image = ImageIO.read(new File("gZtC3.jpg"));
} catch (IOException ex) {
    ex.printStackTrace(System.err);
}
double theta = Math.PI / 2;
int w = image.getWidth(null);
int h = image.getHeight(null);
AffineTransform at = AffineTransform.getRotateInstance(theta, w / 2, h / 2);
BufferedImage src = new BufferedImage(w, h, BufferedImage.TYPE_INT_ARGB);
Graphics2D g = src.createGraphics();
g.drawImage(image, 0, 0, null);
g.dispose();
AffineTransformOp op = new AffineTransformOp(at, AffineTransformOp.TYPE_BICUBIC);
BufferedImage dst = op.filter(src, null);
this.add(new JLabel(new ImageIcon(dst), JLabel.CENTER));
于 2011-05-06T04:46:26.047 に答える
1

腐敗によって色の変化に言及している場合は、フィルターを取り出してください。構文をちゃんと理解しているとマイナスイメージになってしまいます。

変換を使用するときは常にフィルターをオフのままにして、手動で行います。それには多くの時間がかかりますが、常により有用であることがわかります。ただの提案です。

于 2011-05-06T02:51:45.467 に答える