图片旋转

简介: 图片旋转

题目描述

    图片旋转是对图片最简单的处理方式之一,在本题中,你需要对图片顺时针旋转90度。

我们用一个nxm的二维数组来表示一个图片,例如下面给出一个3x4的图片的例子:

1 3 5 7
9 8 7 6
3 5 9 7
这个图片顺时针旋转90度后的图片如下:
3 9 1

5 8 3

9 7 5

7 6 7
给定初始图片,请计算旋转后的图片。
输入描述:

    输入的第一行包含两个整数nm,分别表示行数和列数。

接下来n行,每行m个整数,表示给定的图片。图片中的每个元素(像素)为一个值为0至255之间的整数(包含0和255)。
输出描述:

    输出m行n列,表示旋转后的图片

那这道题就比较简单了,旋转后的第一行对应的就是旋转前的第一列对吧,那这样很多人就会想不就是

后【i】【j】 = 前【j】【i】

得到的结果却是:

e9a48567dacf4e7cb80c8216048e34e1.png

很多人以为直接换就是了,其实不然,你会发现这样替换的话,得到的结果和每一行的次序刚好颠倒了,为什么呢,因为就是第一行第一列的值旋转后要到第一行最后一列去了;

因此应该这样替换

后【i】【j】= 前【n-1-j】【i】

得到的结果是:

0faa427009234d48836424df60f0b124.png

这样得到的结果才是正确的

好,直接上代码:

import java.util.Scanner;

public class day05 {

public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    //定义行和列
    int n;
    int m;
    n = scanner.nextInt();
    m = scanner.nextInt();
    //输入元素值
    int[][] image = new int[n][m];
    for(int i=0;i<n;i++) {
        for (int j = 0; j < m; j++) {
            image[i][j] = scanner.nextInt();
        }
    }
    //进行值替换
    int [][] laterImage = new int[m][n];
    for(int i=0;i<m;i++) {
        for (int j = 0; j < n; j++) {
            laterImage[i][j] = image[n-1-j][i];
        }
    }
    //打印结果
    for(int i=0;i<m;i++) {
        for (int j = 0; j < n; j++) {
            System.out.print(laterImage[i][j] + " ");
        }
        System.out.println();
    }
}

}

相关文章
|
7月前
|
移动开发 前端开发 HTML5
彩色大风车泡泡Canvas特效
彩色大风车泡泡Canvas特效
59 7
彩色大风车泡泡Canvas特效
裁剪图片
裁剪图片
77 0
裁剪图片
|
Android开发
autojs圆形波纹和方形波纹
牙叔教程 简单易懂
146 0
|
Python
图片旋转 90、180、270
图片旋转 90、180、270
175 0
3d旋转焦点图
在线演示 本地下载
650 0
|
C# 小程序
给图片加上阴影效果
原文:给图片加上阴影效果 今天写一个小程序有一个给图片加上阴影的需求,记得WPF的Effect中就有阴影特效,就打算用它了。代码如下:     using (var imageStreamSource = File.
1214 0
u3d无锯齿遮罩shader-可用于ugui
图片.png 图片.png // 遮罩shader Shader "Custom/CircleMask" { Properties{ _MainTex("MainTex", 2D) = "white" ...
1760 0