嘿嘿,就是将图片转换为HTML代码(DIV点阵),也就是将图片的每个象素点都用DIV来实现,这样一张HTML图片就出来了 ®B¸G“„@˜www.netcsharp.cnù3hî‰6,I3¤
为了避免IE暂停响应,转换的图片不要太大.要不然转换出来也不敢看!比如我们将验证码图片输出为HTML代码,这样要破解的话就让对方去还原这副图片吧 ®B¸G“„@˜www.netcsharp.cnù3hî‰6,I3¤
大家看看下面这张图(嘿嘿,不是图片来的,注意别用鼠标拖动选择,要不然我怕你的浏览器会暂停响应!)的效果:®B¸G“„@˜www.netcsharp.cnù3hî‰6,I3¤
          public static void CovertImageToHtml(string imageFile, string fileName)®B¸G“„@˜www.netcsharp.cnù3hî‰6,I3¤
       
{®B¸G“„@˜www.netcsharp.cnù3hî‰6,I3¤
           
using (Bitmap image = new Bitmap(imageFile))®B¸G“„@˜www.netcsharp.cnù3hî‰6,I3¤
           
{®B¸G“„@˜www.netcsharp.cnù3hî‰6,I3¤
                CovertImageToHtml(image, fileName); ®B¸G“„@˜www.netcsharp.cnù3hî‰6,I3¤
            }
®B¸G“„@˜www.netcsharp.cnù3hî‰6,I3¤
        }
®B¸G“„@˜www.netcsharp.cnù3hî‰6,I3¤
       
public static void CovertImageToHtml(Bitmap image, string fileName)®B¸G“„@˜www.netcsharp.cnù3hî‰6,I3¤
       
{®B¸G“„@˜www.netcsharp.cnù3hî‰6,I3¤
           
using (StreamWriter writer = new StreamWriter(fileName, false, Encoding.Default, 1024))®B¸G“„@˜www.netcsharp.cnù3hî‰6,I3¤
           
{®B¸G“„@˜www.netcsharp.cnù3hî‰6,I3¤
               
//定义CSS样式®B¸G“„@˜www.netcsharp.cnù3hî‰6,I3¤
                writer.WriteLine("<style>");®B¸G“„@˜www.netcsharp.cnù3hî‰6,I3¤
                writer.WriteLine(
"#htmlpic{{width:{0}px;height:{1}px;}}", image.Width, image.Height);®B¸G“„@˜www.netcsharp.cnù3hî‰6,I3¤
                writer.WriteLine(
"#htmlpic div{float:left;height:1px;overflow:hidden;}");®B¸G“„@˜www.netcsharp.cnù3hî‰6,I3¤
                writer.WriteLine(
"</style>");®B¸G“„@˜www.netcsharp.cnù3hî‰6,I3¤
®B¸G“„@˜www.netcsharp.cnù3hî‰6,I3¤
               
//输出图片数据®B¸G“„@˜www.netcsharp.cnù3hî‰6,I3¤
                writer.WriteLine("<div id=\"htmlpic\">");®B¸G“„@˜www.netcsharp.cnù3hî‰6,I3¤
               
for (int h = 0; h < image.Height; h++)®B¸G“„@˜www.netcsharp.cnù3hî‰6,I3¤
               
{®B¸G“„@˜www.netcsharp.cnù3hî‰6,I3¤
                    Color preColor
= image.GetPixel(0, h);    //获取第一点的颜色值®B¸G“„@˜www.netcsharp.cnù3hî‰6,I3¤
                   
int count = 1;®B¸G“„@˜www.netcsharp.cnù3hî‰6,I3¤
                   
for (int w = 1; w < image.Width; w++)®B¸G“„@˜www.netcsharp.cnù3hî‰6,I3¤
                   
{®B¸G“„@˜www.netcsharp.cnù3hî‰6,I3¤
                        Color nowColor
= image.GetPixel(w, h);®B¸G“„@˜www.netcsharp.cnù3hî‰6,I3¤
                       
if (preColor == nowColor)®B¸G“„@˜www.netcsharp.cnù3hî‰6,I3¤
                       
{®B¸G“„@˜www.netcsharp.cnù3hî‰6,I3¤
                            count
++;®B¸G“„@˜www.netcsharp.cnù3hî‰6,I3¤
                        }
®B¸G“„@˜www.netcsharp.cnù3hî‰6,I3¤
                       
else®B¸G“„@˜www.netcsharp.cnù3hî‰6,I3¤
                       
{®B¸G“„@˜www.netcsharp.cnù3hî‰6,I3¤
                            writer.WriteLine(
"<div style=\"background: {0};width: {1}px\"></div>", ColorTranslator.ToHtml(preColor), count);®B¸G“„@˜www.netcsharp.cnù3hî‰6,I3¤
                            count
= 1;®B¸G“„@˜www.netcsharp.cnù3hî‰6,I3¤
                            preColor
= nowColor;®B¸G“„@˜www.netcsharp.cnù3hî‰6,I3¤
                        }
®B¸G“„@˜www.netcsharp.cnù3hî‰6,I3¤
                    }
®B¸G“„@˜www.netcsharp.cnù3hî‰6,I3¤
                   
//写入最后的数据®B¸G“„@˜www.netcsharp.cnù3hî‰6,I3¤
                    writer.WriteLine("<div style=\"background: {0};width: {1}px\"></div>", ColorTranslator.ToHtml(preColor), count);®B¸G“„@˜www.netcsharp.cnù3hî‰6,I3¤
                    writer.WriteLine();®B¸G“„@˜www.netcsharp.cnù3hî‰6,I3¤
                }
®B¸G“„@˜www.netcsharp.cnù3hî‰6,I3¤
                writer.WriteLine(
"</div>");®B¸G“„@˜www.netcsharp.cnù3hî‰6,I3¤
            }
®B¸G“„@˜www.netcsharp.cnù3hî‰6,I3¤
        }
®B¸G“„@˜www.netcsharp.cnù3hî‰6,I3¤