Para entender esses códigos, é principalmente entender o objeto dos dados binários no ASP, adodb.stream! Este programa usa principalmente o Adodb.stream. Ainda não existe um bom mecanismo de identificação. Identifique 4321 a 89910, para que o código da imagem ainda esteja mais seguro. Eu vi o método de rachadura violenta na Internet. A página será proibida de enviar o envio externo. Arquivo ASP: code.asp Arquivo de dados: body.fix, head.fix Uso: <img src = "code.asp"> <% Response.Buffer = true NUMCODE Função numCode () Response.Expires = -1 Response.addheader "Pragma", "No-Cache" Response.addheader "cache-clm", "sem cache" Dim znum, eu, j Dim Ados, Ados1 Randomize Timeer Gerar quatro dígitos aleatórios: Znum = Cint (8999*Rnd 1000) Passar para a sessão Sessão ("getCode") = Znum O loop for colocado o número aleatório em uma matriz de 3 assentamentos 3, o que é conveniente para fornecer à transformação da matriz subsequente Dim Zimg (3), NSTR NSTR = CSTR (Znum) Para i = 0 a 3 zimg (i) = cint (mid (nstr, i 1,1)))) Próximo Dim POS 'Defina dois objetos binários adodb.stream, para o uso da operação de dados de imagem: set ados = server.createObject ("adodb.stream") Ados.mode = 3 Ados.type = 1 Ados.open set ados1 = server.createObject ("adodb.stream") Ados1.mode = 3 Ados1.type = 1 Ados1.open 'Carregar 0 ~ 9 dados digitais 10x100, dados da matriz GBR, cada um 320 bytes, 10 números 3200byte 'BGR de um ponto, 10x10 aponta um número, um ponto três bytes (binário de 8 bits, hexadecimal 00 ~ ff) 'Uma linha de 10 pontos 30 bytes Linha que termina 00 00 00 dois bytes de bytes, então um 10x100 é menor que a imagem longa, cada número 10x10 é 320 bytes 'Aqueles que estão crescendo mais que largos, não há como terminar a marca 0000, são 300 bytes diretamente Estes são os dados do BMP 24bits. 'Quanto à cabeça, também é muito simples, incluindo comprimento e largura, a imagem comece a marcar e assim Ados.loadfromfile (server.mappath ("body.fix"))) Ados1.write ados.read (1280) 'O primeiro para o loop e os quatro números correspondentes são extraídos do número de números aleatórios gerados de 10x100 Mas matriz de números verticais para i = 0 a 3 Ados.Position = (9-zimg (i))*320 Ados1.position = i*320 Ados1.write ados.read (320) próximo 'Limpe os dados do ADOS que foi usado e ajuste a nova imagem de cabeça 54 byte do arquivo de cabeçalho Ados.loadfromfile (server.mappath ("head.fix"))) Pos = lenb (ados.read ()) Ados.Positation = POS 'Especifique a posição POS, você pode adicionar dados gráficos à posição de 54 bytes O segundo para loop, o número de números de números, de blocos verticais a blocos numéricos horizontais O método é extrair 4 vezes 320 bytes para escrever 30 bytes para objetos da ADOS e extrair dados de imagem que mudam a segunda linha. 30 bytes são devidos ao rótulo final com uma linha de 00 00 no BMP. para i = 0 a 9 Etapa 1 para j = 0 a 3 Ados1.Position = i*32 J*320 Ados.Positation = POS 30*ji*120 Ados.write ados1.read (30) próximo próximo Ados.Positation = 0 Response.BinaryWrite envia diretamente dados de imagem para o cliente Response.ContentType = "Image/BMP" Response.BinaryWrite ados.read () Ados.close: set ados = nada Ados1.close: set ados1 = nada Função final |