如何将具有双元素的数组转换为可以使用的图像?

时间:2011-10-20 22:46:49

标签: objective-c image multidimensional-array core-graphics

我正在使用带有Objective C的XCode,我想知道如何使用double类型的元素将数组转换为可以在xCode中轻松使用的图像?

数组定义如下:

double x [50][100];

另外,我不确定如何释放此变量(x)。我是否需要担心解除分配?

1 个答案:

答案 0 :(得分:0)

  

我正在使用带有Objective C的XCode,我想知道如何使用double类型的元素将数组转换为可以在xCode中轻松使用的图像?

数字需要代表像素的组成部分。对于RGB颜色,每个像素需要3个或4个分量(数字),具体取决于您是否需要透明度(alpha)。对于单色(灰度),你需要1或2.对于CMYK颜色(用于打印),你需要4或5.(我不确定你是否可以做CMYKA,实际上。)

此外,他们需要按照定义的顺序。 RGB颜色的常用顺序包括RGBA(alpha last)和ARGB(alpha first)。

最后,它们应该是一个平面阵列。您可能会使用多维数组,但我不确定您是否可以依赖它。

一旦你满意所有这些,你需要将数字数组传递给CGImage或CGBitmapContext,具体取决于你正在做什么。这两者都是Core Graphics的一部分。

  

另外,我不确定如何解除分配这个变量(x)。我是否需要担心解除分配?

不,因为你没有动态分配它。未另行声明的变量具有“自动存储持续时间”,这意味着您所期望的,并且在您的声明中,整个数组都在变量中。

与这样的声明形成对比:

 double *x = …;

在该声明中,只有一个指针在变量中;它指向的内存位于其他地方,可能会也可能不会自动管理,完全取决于 的分配方式。