[引用]该C#程序可将文本文件藏于位图中,也可导出之!

这是一个C#程序,可以将文本文件隐藏到24位位图中,也可以从位图中导出隐藏的数据。通过Bitmap24Writer和Bitmap24Reader类实现写入和读取操作,利用位图像素存储额外信息。
摘要由CSDN通过智能技术生成
http://blog.csdn.net/yiruoyun/archive/2004/10/18/141514.aspx

//使用方法:
// BmpSafe.exe /file2bmp (input BMP) (input file to hide) [output file]
//BmpSafe.exe /bmp2file (data BMP) [output file]

using System;
using System.IO;
using System.Drawing;

public class Bitmap24Writer
{
 protected Bitmap bmp;
 protected int curX, curY, iRGB;
 protected uint bitsLeft, bitsTotal;
 protected byte r, g, b;

 public Bitmap24Writer(Bitmap bmp)
 {
  if (bmp.PixelFormat != System.Drawing.Imaging.PixelFormat.Format24bppRgb)
   throw new ArgumentException();
  // assign vars
  curX       = curY = iRGB = 0;
  this.bmp   = bmp;
  bitsLeft   = bitsTotal = (uint)bmp.Height * (uint)bmp.Width * 3;
 }

 public uint GetUnusedBitCount()
 {
  return bitsLeft;
 }

 public uint GetMaxBitStorageCount()
 {
  return bitsTotal;
 }

 public Bitmap GetBitmap()
 {
  return bmp;
 }

 public bool WriteByte(byte by)
 {
  if (bitsLeft < 8)
   return false;

  uint bits2Do = 8;

  for (; curX < bmp.Width; curX++)
  {
   if (curY >= bmp.Height)
    curY = 0;

   for (; curY < bmp.Height; curY++)
   {
    if (bits2Do == 0)
     return true;

    Color col = bmp.GetPixel(curX, curY);
    r = col.R;
    g = col.G;
    b = col.B;

    for ( ; ; )
    {
     byte curBit = (byte)(by & 1);

     switch( iRGB )
     {
      case 0:
       r = (byte)(r & 0xFE);
       r |= curBit;
       break;

      case 1:
       g = (byte)(g & 0xFE);
       g |= curBit;
       break;

      case 2:
       b = (byte)(b & 0xFE);
       b |= curBit;
       break;
     }
     --bits2Do;
     --bitsLeft;
     by >>= 1;
     bmp.SetPixel(curX, curY, Color.FromArgb(r, g, b));
     if (iRGB == 2)
     {
      iRGB = 0;
      break;
     }
     iRGB&

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值