1。反色

 

Bitmap desc = new Bitmap(source.Width, source.Height);
BitmapData sourcedata 
= source.LockBits(new Rectangle(00, source.Width, source.Height), 
                ImageLockMode.ReadOnly, PixelFormat.Format24bppRgb);
BitmapData descdata 
= desc.LockBits(new Rectangle(00, desc.Width, desc.Height),
                ImageLockMode.WriteOnly, PixelFormat.Format24bppRgb);

unsafe
{
      
byte* sourceptr = (byte*)sourcedata.Scan0;  
      
byte* descptr = (byte*)descdata.Scan0;
      
for (int x = 0; x < source.Height; x++)
      {
           
for (int y = 0; y < source.Width; y++)
           {
                
*(descptr++= (byte)(255 - *(sourceptr++));
                
*(descptr++= (byte)(255 - *(sourceptr++));
                
*(descptr++= (byte)(255 - *(sourceptr++));
            }
            sourceptr 
+= sourcedata.Stride - source.Width * 3;
            descptr 
+= descdata.Stride - desc.Width * 3;
       }
}
source.UnlockBits(sourcedata);
desc.UnlockBits(descdata);

 

 

2。霓虹灯

 

Bitmap desc = new Bitmap(source.Width, source.Height);
BitmapData sourcedata 
= source.LockBits(new Rectangle(00, source.Width, source.Height), 
                ImageLockMode.ReadOnly, PixelFormat.Format24bppRgb);
BitmapData descdata 
= desc.LockBits(new Rectangle(00, desc.Width, desc.Height),
                ImageLockMode.WriteOnly, PixelFormat.Format24bppRgb);

unsafe
{
      
byte* sourceptr = (byte*)sourcedata.Scan0;  
      
byte* descptr = (byte*)descdata.Scan0;
      
int step = source.Width * 3;
      
double value;
      
for (int x = 0; x < source.Height; x++)
      {
           
for (int y = 0; y < source.Width; y++)
           {
                value 
= 2 * Math.Sqrt((*sourceptr - *(sourceptr + 3)) * (*sourceptr - *(sourceptr + 3)) +
                        (
*sourceptr - *(sourceptr + step)) * (*sourceptr - *(sourceptr + step)));
                
*(descptr++= value > 255 ? (byte)255 : (byte)(value);
                sourceptr
++;
            }
            sourceptr 
+= sourcedata.Stride - source.Width * 3;
            descptr 
+= descdata.Stride - desc.Width * 3;
       }
}
source.UnlockBits(sourcedata);
desc.UnlockBits(descdata);

 

 

3。浮雕

 

 Bitmap desc = new Bitmap(source.Width, source.Height);

BitmapData sourcedata = source.LockBits(new Rectangle(00, source.Width, source.Height), 
                ImageLockMode.ReadOnly, PixelFormat.Format24bppRgb);
BitmapData descdata 
= desc.LockBits(new Rectangle(00, desc.Width, desc.Height),
                ImageLockMode.WriteOnly, PixelFormat.Format24bppRgb);

unsafe
{
      
byte* sourceptr = (byte*)sourcedata.Scan0;  
      
byte* descptr = (byte*)descdata.Scan0;
      
int step = (source.Width + 1* 3;
      
double value;
      
for (int x = 0; x < source.Height; x++)
      {
           
for (int y = 0; y < source.Width; y++)
           {
                value 
= Math.Abs(*(sourceptr - step) - *sourceptr + 128);
                
*(descptr++= value > 255 ? (byte)255 : (byte)(value);
                sourceptr
++;
            }
            sourceptr 
+= sourcedata.Stride - source.Width * 3;
            descptr 
+= descdata.Stride - desc.Width * 3;
       }
}
source.UnlockBits(sourcedata);
desc.UnlockBits(descdata);

 

 

相关文章:

  • 2021-07-17
  • 2021-07-31
  • 2021-08-20
  • 2021-11-11
  • 2021-09-08
  • 2021-07-08
  • 2022-12-23
  • 2021-12-09
猜你喜欢
  • 2021-08-13
  • 2021-10-05
  • 2021-09-29
  • 2021-10-02
  • 2021-04-26
  • 2021-12-09
  • 2021-04-06
相关资源
相似解决方案