有没有办法将一幅图片随机切成N个不规则的片,就好象打碎的玻璃一样?思路?
我是想生成那种完全不规则的,边缘就象地图的边界一样的那种。

解决方案 »

  1.   

    可以利用层来实现,先定义一张有分裂痕的gif或png,加到要进行处理的图片的最上层
    具体方法自己看 Image类
      

  2.   

    打错了,是aspjpeg组件,专门助理图片的。
      

  3.   

    原来倒时做过把BMP图片分成规则的N个小图.没做过不规则的.
    大概说一下思路:首先要弄明白BMP的格式,他的前面是固定的格式信息,后面的是像素,像素和看到的相反他是从底向上存储的, 具体的你可以查一下.
    然后就是切割像素了,规则的好切,不规则的话可能要用的多维数组可自定义结构了.这个对于楼主来说都应该不难,我认为关健是如果把一个图随机切成多块的算法,有了每个块的结构信息生成一张图应该不难.
    下面说一下切成多块算法
    先说一下简单的,按一条直线切分,首先在图的范围内随机生成2个点坐标形成一条一直线,然后根据这个直线找到经过这条直线的点.这就需要用到计算机图形学中的算法了,这本书里有.楼上要回去查了.有了这个算法就OK了.
    多条直线的我就不多说了重复几次就行了.
    至于曲线的办法和上面类似,生成曲线和按曲线找点的算法在计算机图形学中也有.
      

  4.   

    决定使用GDI+中的GraphicsPath来做,思路如下:
    1、随机在图片范围内生成N个随机点,以这N个随机点用Curve连成相对比较光滑的曲线或者干脆使用直线;
    2、以此为基础,在图形的四边上随机取四个点,将这N个随机点中最接近的点再次随机取出M个点,再次生成曲线或直线,当然允许有一个随机的波动范围,否则就成了直线。这样至少可以得到四至五块了。
    3、将分出来的区域再次按2的方式随机分割,根据需要循环。
    4、最后将各自的区域产生对应的图片,方法是使用GraphicsPath产生Region, SetClip,绘图保存即得结果。目前只是思路,仍未开始写程序。
      

  5.   

    http://www.codeproject.com/cs/media/Image_Processing_Lab.asp?msg=1342964