主要是上传时根据用户的选择,对图片进行调亮调暗后保存。
同时也可以设定保存时压缩至百分之多少进行保存
这些要怎么去实现啊,各位帮忙啊,这方面我啥都不懂啊。
此外,关于图形处理的也可以多说些,谢谢大家乐

解决方案 »

  1.   

    压缩率可以使用EncoderParameter调整
    亮度可以用ImageAttributes.SetGamma方法看MSDN例子
      

  2.   

    我也知道是用Graphics和Bitmap啊,老大。
    只是我不知道该怎么去具体实现它们。
    因为我没弄过图形这一块
    大家帮帮忙啊......
      

  3.   

    很显然,单纯地采用.net技术以B/S架构方式处理图象不是一个明智的做法,可以用VC开发一个图象处理小程序提供客户端下载
      

  4.   

    private Image AdjustGammaAndCompressLevel(Image img,float gamma,CompositingQuality quality)
    {
    Image buffer = new Bitmap(img.Width,img.Height);
    Graphics g = Graphics.FromImage(buffer);
    g.CompositingQuality = quality;
    ImageAttributes attr = new ImageAttributes();
    attr.SetGamma(gamma);
    g.DrawImage(img,
    new Rectangle(0,0,img.Width,img.Height),
    0,0,
    img.Width,
    img.Height,
    GraphicsUnit.Pixel,
    attr);
    g.Dispose();
    return buffer;
    }
    // gamma值设置为(0,10)之间以调整亮度
    // quality值是CompositingQuality枚举
      

  5.   

    谢谢Sunmast(速马|一切皆有可能) 大哥。
    但我搜索了一下你的帖子,但没搜到啊,救命啊。
    我在搜索作者那里填的是“Sunmast”,关键字填的是“%”,但搜索出来的结果只有14篇帖子,而且基本都是灌水性质的。
    我是搜索的方式不对吗?还是有其他的问题?希望GGJJ们再给我多讲讲图形这块的东西,谢谢了。真的要帮忙啊,555~~~
      

  6.   

    http://community.csdn.net/Expert/topic/3843/3843979.xml
      

  7.   

    图形的这快 多查查MSDN  的GUI里面应该完整吧
      

  8.   

    多谢Sunmast大哥,基本上可以弄了。
    只是你说的这个:
    attr.SetGamma(gamma); // gamma值设置为(0,10)之间以调整亮度
    我感觉不太对啊?我将gamma值设置成很大(628),并不是全黑的呀,花屏。
    如果按照MSDN和其他资料说的,一般设为0到2.2之间,2以后的也不是全黑,感觉都是黑白性质的。
    所以综合来看,这个attr.SetGamma(gamma);应该并不是用来调节图片亮度的,个人认为。
    不知道各位大哥还有没有其他的实现方法呢?谢谢。
      

  9.   

    目前使用的是这样一个方法,不知道还有没有更好的办法呢?大家讨论一下,好吗?
    另外,调节亮度和旋转图片这些效果要在即不回传刷新的情况下进行预览,又该怎样做呢?Javascript能做到这点吗?或者是有什么可以变通的办法?多谢大家帮忙了...#region 调节图片亮度
    private bool Brightness(Bitmap b, int nBrightness)
    {
    if (nBrightness < -255 || nBrightness > 255)
    return false;
    BitmapData bmData = b.LockBits(new Rectangle(0, 0, b.Width,
    b.Height), ImageLockMode.ReadWrite, 
    PixelFormat.Format24bppRgb);
    int stride = bmData.Stride;
    System.IntPtr Scan0 = bmData.Scan0;
    int nVal = 0;
    unsafe
    {
    byte * p = (byte *)(void *)Scan0;
    int nOffset = stride - b.Width*3;
    int nWidth = b.Width * 3;
    for(int y=0;y<b.Height;++y)
    {
    for(int x=0; x < nWidth; ++x )
    {
    nVal = (int) (p[0] + nBrightness);
    if (nVal < 0) nVal = 0;
    if (nVal > 255) nVal = 255;
    p[0] = (byte)nVal;
    ++p;
    }
    p += nOffset;
    }
    }
    b.UnlockBits(bmData);
    return true;
    }
    #endregion
      

  10.   

    怎么都没人理我的问题的呢?55555~~~~~调节亮度和旋转图片这些效果要在即不回传刷新的情况下进行预览,又该怎样做呢?
    Javascript能做到这点吗?或者是有什么可以变通的办法?多谢大家帮忙了...