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#来处理灰度图像和彩色图像的镜像效果。在数字图像处理...
图像的垂直镜像意味着图像沿x轴翻转,而水平镜像则沿y轴翻转。在VC中,我们可以遍历图像的每一行或每一列,交换对应的像素值来实现这一效果。例如,对于水平镜像,可以将每一行的像素从右向左复制;对于垂直镜像,则...
描述:使用Shader将图片进行水平/竖直镜像翻转 资源类型:unitypackage,导入即可使用 内容: 包含shader,material,示例场景 可以在运行时自主对图形进行水平或者竖直镜像翻转,也可同时水平和竖直镜像翻转 对...
根据镜像的方向,我们可以将图像镜像分为水平镜像(又称左右镜像)和垂直镜像(又称上下镜像)。在水平镜像中,图像沿水平轴(X轴)翻转,原本在左侧的元素会出现在右侧;在垂直镜像中,图像沿垂直轴(Y轴)翻转,...
在垂直镜像中,需要遍历每一列,因为垂直镜像的对称轴是图像的水平中心线。 动态效果的变换则增加了额外的复杂性。这可能涉及到动画和定时器的使用,例如,可以设置一个定时器,每次间隔一段时间就更新一次镜像,以...
本文将深入解析如何使用C#语言实现图像的水平镜像与垂直镜像,通过具体代码示例来阐述这一过程。 ### 图像镜像的概念 图像镜像是指对图像进行水平或垂直翻转的过程,这种变换不会改变图像的内容,但会改变其布局...
本资源提供的MATLAB代码实现了四种基本的几何变换:水平镜像、垂直错切、旋转和加倍。下面我们将详细探讨这些知识点。 首先,**水平镜像**是通过沿着图像的垂直轴翻转图像来实现的。这种变换在许多应用中都很常见,...
**定义**:图像镜像是指将图像沿着一条直线进行反射变换,通常分为水平镜像和垂直镜像两种情况。 **实现步骤**: 1. 使用 `GetImage()` 读取原始图像数据。 2. 获取图像的高度和宽度信息。 - `height = bottom - ...
镜像操作包括水平镜像和垂直镜像。水平镜像是将图像沿x轴翻转,垂直镜像是沿y轴翻转。简单来说,就是将像素的x或y坐标取其相反数,然后映射到新的位置。 5. **图像缩放**: 缩放是改变图像的尺寸,分为放大和缩小...
水平镜像会将图像沿其垂直中心线翻转,而垂直镜像则沿水平中心线翻转。对于二维数组,我们可以通过遍历数组并交换对应位置的像素来实现镜像。例如,对于水平镜像,原图像的像素`(x, y)`在镜像后会变为`(width - x - ...
水平镜像(沿X轴)会使图像向右翻转,而垂直镜像(沿Y轴)则会使图像向上翻转。这种变换通常涉及到每个像素的位置改变,对于每个像素,它的新坐标是其原始坐标的相反数,但保持在同一轴上。 在VC++中,我们可以利用...
图片的水平或垂直翻转(镜像)可以通过Canvas的drawImage()方法实现。这个方法有多种重载形式,其中一种可以接受四个额外的参数,分别代表源图像的x、y、宽度和高度。通过调整这些参数,我们可以让图片沿水平或垂直...
"超酷的CSS3图片镜像效果网页特效"是一种利用CSS3的transform属性来创建图片的镜像效果,这种效果可以是水平的,也可以是垂直的,甚至可以是任意角度的旋转。通过设置transform: scale(-1, 1)或者transform: rotateY...
VC++数字图像处理之图像镜像,实现了图像的水平镜像和垂直镜像 注:本资源和之前博客上资源是连贯的,代码功能是不断的增加的,如果下载了这次的,前面的资源就不用下载了,因为这个代码已经包含了前面的示例代码
- 图片翻转分为水平翻转和垂直翻转。同样使用`AffineTransform`,但这次是设置缩放因子。水平翻转是在X轴上设置-1,垂直翻转是在Y轴上设置-1。 ```java // 水平翻转 AffineTransform flipHorizontally = new ...
本篇文章将深入探讨如何使用Matrix对Bitmap进行旋转和镜像水平垂直翻转。 首先,我们需要理解Bitmap对象。Bitmap是Android中用于存储和显示图像的基本类,它包含了图像的像素数据。当我们想要改变Bitmap的视觉表现...
镜像有两种方式:水平翻转和垂直翻转。在C#中,我们可以使用`DrawImage`方法的重载版本,通过指定源矩形和目标矩形的宽度和高度来实现翻转。 ```csharp g.DrawImage(image, new Rectangle(new Point(0, 0), image....
2. **图片翻转**:图片的水平翻转和垂直翻转是通过镜像原理实现的。在编程中,可以通过改变图像的像素坐标来达到翻转效果。例如,在OpenCV中,可以使用`flip()`函数,设置翻转轴参数即可实现。 3. **水印添加**:...
例如,水平镜像可以通过设置90度和270度的旋转实现,垂直镜像则通过180度旋转实现。 4. **自定义工具类设计**: - 一个良好的视频镜像工具类应该包含以下几个核心方法:初始化、加载视频、设置镜像类型(水平或...
镜像操作包括水平镜像和垂直镜像。在水平镜像中,图像被翻转到其水平轴的对称位置,即每个像素的x坐标被其宽度减去自身x坐标得到。对于垂直镜像,y坐标则进行相同的处理。这个过程相对简单,只需要遍历图像并交换...