`
venus585625
  • 浏览: 252913 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

水平,垂直镜像图片

阅读更多
http://lzy32.blog.163.com/blog/static/3768032320076209273297/

public static Image createImage(Image image,
                                int x,
                                int y,
                                int width,
                                int height,
                                int transform)

其中:transform就可以指定要做的操作,比如水平镜像,转90度等

/***************************************************************************
  *
  * 垂直镜像的方法
  */
public static Image verticalMirror(Image img) {

  int[] rgbOutput = null;
  int[] rgbInput = null;
  int width = 0, height = 0;
  int[][] tempArr = null;
  try {
   width = img.getWidth();
   height = img.getHeight();
   rgbInput = new int[width * height];
   rgbOutput = new int[width * height];
   img.getRGB(rgbInput, 0, width, 0, 0, width, height);
   int i, j, k;
   k = 0;
   tempArr = new int[height][width];

   for (i = 0; i < height; i++)
    for (j = 0; j < width; j++)
     tempArr[i][j] = rgbInput[k++];
   rgbInput = null;// 显式地设置为空值,告诉系统可以垃圾回收
   int[][] tempArr1 = new int[height][width];
   for (i = 0; i < height; i++)
    for (j = 0; j < width; j++) {
     tempArr1[i][width - 1 - j] = tempArr[i][j];
    }
   tempArr = null;// 显式地设置为空值,告诉系统可以垃圾回收
   k = 0;
   for (i = 0; i < height; i++)
    for (j = 0; j < width; j++) {
     rgbOutput[k] = tempArr1[i][j];
     k++;

    }
   tempArr1 = null;// 显式地设置为空值,告诉系统可以垃圾回收
   // return img;
   return Image.createRGBImage(rgbOutput, width, height, true);
  } catch (OutOfMemoryError e) {
   // e.printStackTrace();
   ImageAlbum.showAlert("图像尺寸太大,不能完成此操作.");
   return img;
  } finally {
   rgbOutput = null;
  }

}

/***************************************************************************
  *
  * 水平镜像的方法
  */
public static Image horizontalMirror(Image img) {

  int[] rgbOutput = null;
  int[] rgbInput = null;
  int width = 0, height = 0;
  int[][] tempArr = null;
  int[][] tempArr1 = null;
  try {
   width = img.getWidth();
   height = img.getHeight();
   rgbInput = new int[width * height];
   rgbOutput = new int[width * height];
   img.getRGB(rgbInput, 0, width, 0, 0, width, height);
   int i, j, k;
   k = 0;
   tempArr = new int[height][width];

   for (i = 0; i < height; i++)
    for (j = 0; j < width; j++)
     tempArr[i][j] = rgbInput[k++];
   rgbInput = null;// 显式地设置为空值,告诉系统可以垃圾回收
   tempArr1 = new int[height][width];
   for (i = 0; i < height; i++)
    for (j = 0; j < width; j++) {
     tempArr1[height - 1 - i][j] = tempArr[i][j];
    }
   tempArr = null;// 显式地设置为空值,告诉系统可以垃圾回收
   k = 0;
   for (i = 0; i < height; i++)
    for (j = 0; j < width; j++) {
     rgbOutput[k] = tempArr1[i][j];
     k++;

    }
   tempArr1 = null;// 显式地设置为空值,告诉系统可以垃圾回收
   return Image.createRGBImage(rgbOutput, width, height, true);
  } catch (OutOfMemoryError e) {
   // e.printStackTrace();
   ImageAlbum.showAlert("图像尺寸太大,不能完成此操作.");
   return img;
  } finally {
   rgbOutput = null;
  }

}
分享到:
评论

相关推荐

    C#水平垂直图像镜像---C#数字图像处理算法典型实例.赵春江

    在本文中,我们将深入探讨C#编程语言在数字图像处理领域的应用,特别是在实现图像水平和垂直镜像这一重要技术上。由赵春江提供的实例,我们有机会了解如何使用C#来处理灰度图像和彩色图像的镜像效果。在数字图像处理...

    VC 图像几何变换、图像平移、垂直水平镜像、图像转置、图像缩放、图像旋转

    图像的垂直镜像意味着图像沿x轴翻转,而水平镜像则沿y轴翻转。在VC中,我们可以遍历图像的每一行或每一列,交换对应的像素值来实现这一效果。例如,对于水平镜像,可以将每一行的像素从右向左复制;对于垂直镜像,则...

    UnityShader使用Shader将图片进行水平/竖直镜像翻转

    描述:使用Shader将图片进行水平/竖直镜像翻转 资源类型:unitypackage,导入即可使用 内容: 包含shader,material,示例场景 可以在运行时自主对图形进行水平或者竖直镜像翻转,也可同时水平和竖直镜像翻转 对...

    数字图像处理 图像镜像

    根据镜像的方向,我们可以将图像镜像分为水平镜像(又称左右镜像)和垂直镜像(又称上下镜像)。在水平镜像中,图像沿水平轴(X轴)翻转,原本在左侧的元素会出现在右侧;在垂直镜像中,图像沿垂直轴(Y轴)翻转,...

    图形镜像 C#

    在垂直镜像中,需要遍历每一列,因为垂直镜像的对称轴是图像的水平中心线。 动态效果的变换则增加了额外的复杂性。这可能涉及到动画和定时器的使用,例如,可以设置一个定时器,每次间隔一段时间就更新一次镜像,以...

    C#图像镜像的代码

    本文将深入解析如何使用C#语言实现图像的水平镜像与垂直镜像,通过具体代码示例来阐述这一过程。 ### 图像镜像的概念 图像镜像是指对图像进行水平或垂直翻转的过程,这种变换不会改变图像的内容,但会改变其布局...

    MATLAB实现图像的几何变换(包含水平镜像、垂直错切、旋转和加倍)

    本资源提供的MATLAB代码实现了四种基本的几何变换:水平镜像、垂直错切、旋转和加倍。下面我们将详细探讨这些知识点。 首先,**水平镜像**是通过沿着图像的垂直轴翻转图像来实现的。这种变换在许多应用中都很常见,...

    图像变换(图像平移、图像颠倒、图像镜像变换、图像旋转)

    **定义**:图像镜像是指将图像沿着一条直线进行反射变换,通常分为水平镜像和垂直镜像两种情况。 **实现步骤**: 1. 使用 `GetImage()` 读取原始图像数据。 2. 获取图像的高度和宽度信息。 - `height = bottom - ...

    BMP文件旋转,平移,镜像,缩放

    镜像操作包括水平镜像和垂直镜像。水平镜像是将图像沿x轴翻转,垂直镜像是沿y轴翻转。简单来说,就是将像素的x或y坐标取其相反数,然后映射到新的位置。 5. **图像缩放**: 缩放是改变图像的尺寸,分为放大和缩小...

    图像镜像的c++代码

    水平镜像会将图像沿其垂直中心线翻转,而垂直镜像则沿水平中心线翻转。对于二维数组,我们可以通过遍历数组并交换对应位置的像素来实现镜像。例如,对于水平镜像,原图像的像素`(x, y)`在镜像后会变为`(width - x - ...

    图像处理测试图片镜像

    水平镜像(沿X轴)会使图像向右翻转,而垂直镜像(沿Y轴)则会使图像向上翻转。这种变换通常涉及到每个像素的位置改变,对于每个像素,它的新坐标是其原始坐标的相反数,但保持在同一轴上。 在VC++中,我们可以利用...

    图片旋转,鼠标滚轮缩放,镜像,切换图片js代码

    图片的水平或垂直翻转(镜像)可以通过Canvas的drawImage()方法实现。这个方法有多种重载形式,其中一种可以接受四个额外的参数,分别代表源图像的x、y、宽度和高度。通过调整这些参数,我们可以让图片沿水平或垂直...

    超酷的CSS3图片镜像效果网页特效

    "超酷的CSS3图片镜像效果网页特效"是一种利用CSS3的transform属性来创建图片的镜像效果,这种效果可以是水平的,也可以是垂直的,甚至可以是任意角度的旋转。通过设置transform: scale(-1, 1)或者transform: rotateY...

    VC++数字图像处理之图像镜像

    VC++数字图像处理之图像镜像,实现了图像的水平镜像和垂直镜像 注:本资源和之前博客上资源是连贯的,代码功能是不断的增加的,如果下载了这次的,前面的资源就不用下载了,因为这个代码已经包含了前面的示例代码

    java 图片旋转、翻转、镜像处理

    - 图片翻转分为水平翻转和垂直翻转。同样使用`AffineTransform`,但这次是设置缩放因子。水平翻转是在X轴上设置-1,垂直翻转是在Y轴上设置-1。 ```java // 水平翻转 AffineTransform flipHorizontally = new ...

    如何使用Matrix对bitmap的旋转与镜像水平垂直翻转

    本篇文章将深入探讨如何使用Matrix对Bitmap进行旋转和镜像水平垂直翻转。 首先,我们需要理解Bitmap对象。Bitmap是Android中用于存储和显示图像的基本类,它包含了图像的像素数据。当我们想要改变Bitmap的视觉表现...

    C#实现图像平移、镜像、缩放及任意角度的旋转

    镜像有两种方式:水平翻转和垂直翻转。在C#中,我们可以使用`DrawImage`方法的重载版本,通过指定源矩形和目标矩形的宽度和高度来实现翻转。 ```csharp g.DrawImage(image, new Rectangle(new Point(0, 0), image....

    图片处理(图片放大缩小翻转水印镜像等更能)

    2. **图片翻转**:图片的水平翻转和垂直翻转是通过镜像原理实现的。在编程中,可以通过改变图像的像素坐标来达到翻转效果。例如,在OpenCV中,可以使用`flip()`函数,设置翻转轴参数即可实现。 3. **水印添加**:...

    android视频镜像工具类

    例如,水平镜像可以通过设置90度和270度的旋转实现,垂直镜像则通过180度旋转实现。 4. **自定义工具类设计**: - 一个良好的视频镜像工具类应该包含以下几个核心方法:初始化、加载视频、设置镜像类型(水平或...

    BMP图象的平移,旋转,镜像,转置

    镜像操作包括水平镜像和垂直镜像。在水平镜像中,图像被翻转到其水平轴的对称位置,即每个像素的x坐标被其宽度减去自身x坐标得到。对于垂直镜像,y坐标则进行相同的处理。这个过程相对简单,只需要遍历图像并交换...

Global site tag (gtag.js) - Google Analytics