public bool ThumbnailCallback()
{
return false;
}
public void Example_GetThumb()
{
Image.GetThumbnailImageAbort myCallback =
new Image.GetThumbnailImageAbort(ThumbnailCallback);
Bitmap myBitmap = new Bitmap("Climber.jpg");
Image myThumbnail = myBitmap.GetThumbnailImage(
100, 90, myCallback, IntPtr.Zero);}
以上代码可以获取100*90大小的图片.
至于尝试可以通过Palette来设置.

解决方案 »

  1.   

    不好意思.有点小错误.
    public bool ThumbnailCallback()
    {
    return false;
    }
    public image Example_GetThumb()
    {
    Image.GetThumbnailImageAbort myCallback =
    new Image.GetThumbnailImageAbort(ThumbnailCallback);
    Bitmap myBitmap = new Bitmap("Climber.jpg");
    Image myThumbnail = myBitmap.GetThumbnailImage(
    100, 90, myCallback, IntPtr.Zero);
    return myThumbnail;
    }
    以上代码可以获取100*90大小的图片.
    至于深度可以通过Palette来设置.
      

  2.   

    但是Palette是个类,我还是不明白怎么通过Palette来设置深度
      

  3.   

    我的代码——//url是图片的路径
    System.Drawing.Image img = System.Drawing.Image.FromStream(new System.Net.WebClient().OpenRead(url));
    Bitmap bmp = new Bitmap(img);
    Bitmap pic = this.GetThumbnailImage(bmp);
    System.IO.MemoryStream MS = new System.IO.MemoryStream();Response.Clear();
    Response.ContentType = "image/gif"; 
    if(img.RawFormat == System.Drawing.Imaging.ImageFormat.Png)
       pic.Save(MS, System.Drawing.Imaging.ImageFormat.Gif);
    else
       pic.Save(MS, img.RawFormat);

    MS.WriteTo(Response.OutputStream);//函数
    private Bitmap GetThumbnailImage(Bitmap image)
    {
         Bitmap bm = new Bitmap(image.Width,image.Height);
    for(int y = 0;y < image.Height;y++)
    {
    for(int x = 0 ;x<image.Width;x++)
    {
    Color c = image.GetPixel(x,y);
    int luma = (int)(c.R * 0.3 + c.G * 0.59 + c.B * 0.11);
    //int luma = (int)(c.R + c.G + c.B );
    bm.SetPixel(x,y,Color.FromArgb(luma,luma,luma));
    }
    }
    return bm;
    }参考ivsee(爱谁谁)的例子,我得到的图片虽然文件小了些,但是是黑白的!
    我希望颜色是彩色但深度小点!请教大虾了
      

  4.   

    你的图片变为黑白是因为
    bm.SetPixel(x,y,Color.FromArgb(luma,luma,luma));调整深度参考SDK:
    ColorPalette 概述定义组成调色板的颜色的数组。这些颜色是 32 位 ARGB 颜色。不可继承。有关此类型所有成员的列表,请参阅 ColorPalette 成员。System.Object
       System.Drawing.Imaging.ColorPalette[Visual Basic]
    NotInheritable Public Class ColorPalette[C#]
    public sealed class ColorPalette[C++]
    public __gc __sealed class ColorPalette[JScript]
    public class ColorPalette线程安全
    此类型的所有公共静态(Visual Basic 中为 Shared)成员对多线程操作而言都是安全的。但不保证任何实例成员是线程安全的。备注
    调色板中的颜色仅限为 32 位 ARGB 颜色。每个 32 位 ARGB 颜色的 alpha、红色、绿色和蓝色值各占 8 位。最低的 8 位组成蓝色位,旁边的 8 位为绿色位,再旁边的 8 位为红色位,最高有效的 8 位是 alpha。这表示每个分量都可以在 0 到 255 之间变化。完全打开时为 255,完全关闭时为 0。Alpha 用于使颜色值成为透明 (alpha = 0) 或不透明 (alpha = 255)。可以在不增加所用颜色数的情况下增加图像的亮度级别。此过程可创建所谓的半色调,它会提高对比度,但要降低分辨率。
      

  5.   

    其实我想实现的是能缩小图片文件的大小,比如30k的能在宽、高不变的情况下通过各个途径减肥到几k左右!降低深度,比如从32位降到8位,不过是我现在能想到的方法。用ColorPalette也无法降低色深啊!