超实用Image类

using System;    using System.Drawing;    using System.Drawing.Imaging;    using System.IO;    using System.Runtime.InteropServices;

    public static class ImageHelper    {        private static float[][] ColorMatrix = null;

        static ImageHelper()        {            float[][] numArray = new float[5][];            numArray[0] = new float[] { 0.299f, 0.299f, 0.299f, 0f, 0f };            numArray[1] = new float[] { 0.587f, 0.587f, 0.587f, 0f, 0f };            numArray[2] = new float[] { 0.114f, 0.114f, 0.114f, 0f, 0f };            float[] numArray2 = new float[5];            numArray2[3] = 1f;            numArray[3] = numArray2;            numArray2 = new float[5];            numArray2[4] = 1f;            numArray[4] = numArray2;            ColorMatrix = numArray;        }

        public static Bitmap ConstructRGB24Bitmap(byte[] coreData, int width, int height)        {            Bitmap bitmap = new Bitmap(width, height, PixelFormat.Format24bppRgb);            BitmapData bitmapdata = bitmap.LockBits(new Rectangle(0, 0, bitmap.Width, bitmap.Height), ImageLockMode.WriteOnly, PixelFormat.Format24bppRgb);            Marshal.Copy(coreData, 0, bitmapdata.Scan0, coreData.Length);            bitmap.UnlockBits(bitmapdata);            return bitmap;        }

        public static Image Convert(byte[] buff)        {            MemoryStream stream = new MemoryStream(buff);            Image image = Image.FromStream(stream);            stream.Close();            return image;        }

        public static byte[] Convert(Image img)        {            Image image = CopyImageDeeply(img);            MemoryStream stream = new MemoryStream();            image.Save(stream, ImageFormat.Jpeg);            byte[] buffer = stream.ToArray();            stream.Close();            image.Dispose();            return buffer;        }

        public static Bitmap ConvertToGrey(Image origin)        {            Bitmap image = new Bitmap(origin);            Graphics graphics = Graphics.FromImage(image);            ImageAttributes imageAttr = new ImageAttributes();            System.Drawing.Imaging.ColorMatrix newColorMatrix = new System.Drawing.Imaging.ColorMatrix(ColorMatrix);            imageAttr.SetColorMatrix(newColorMatrix, ColorMatrixFlag.Default, ColorAdjustType.Bitmap);            graphics.DrawImage(image, new Rectangle(0, 0, image.Width, image.Height), 0, 0, image.Width, image.Height, GraphicsUnit.Pixel, imageAttr);            graphics.Dispose();            return image;        }

        public static Icon ConvertToIcon(Image img, int iconLength)        {            using (Bitmap bitmap = new Bitmap(img, new Size(iconLength, iconLength)))            {                return Icon.FromHandle(bitmap.GetHicon());            }        }

        public static Image ConvertToJPG(Image img)        {            MemoryStream stream = new MemoryStream();            img.Save(stream, ImageFormat.Jpeg);            Image image = Image.FromStream(stream);            stream.Close();            return image;        }

        public static Image CopyImageDeeply(Image img)        {            Bitmap image = new Bitmap(img.Width, img.Height, img.PixelFormat);            Graphics graphics = Graphics.FromImage(image);            graphics.DrawImage(img, 0, 0, img.Width, img.Height);            graphics.Dispose();            return image;        }

        public static byte[] GetRGB24CoreData(Bitmap bm)        {            byte[] destination = new byte[(bm.Width * bm.Height) * 3];            BitmapData bitmapdata = bm.LockBits(new Rectangle(0, 0, bm.Width, bm.Height), ImageLockMode.ReadOnly, PixelFormat.Format24bppRgb);            Marshal.Copy(bitmapdata.Scan0, destination, 0, destination.Length);            bm.UnlockBits(bitmapdata);            return destination;        }

        public static bool IsGif(Image img)        {            FrameDimension dimension = new FrameDimension(img.FrameDimensionsList[0]);            return (img.GetFrameCount(dimension) > 1);        }

        public static byte[] ReviseRGB24Data(byte[] origin, Size originSize, Size newSize)        {            Bitmap image = ConstructRGB24Bitmap(origin, originSize.Width, originSize.Height);            Bitmap bitmap2 = new Bitmap(newSize.Width, newSize.Height);            Graphics graphics = Graphics.FromImage(bitmap2);            graphics.DrawImage(image, 0f, 0f, new RectangleF(0f, 0f, (float) newSize.Width, (float) newSize.Height), GraphicsUnit.Pixel);            graphics.Dispose();            return GetRGB24CoreData(bitmap2);        }

        public static void Save(Image img, string path, ImageFormat format)        {            if ((img != null) && (path != null))            {                CopyImageDeeply(img).Save(path, format);            }        }    }

 

从db里取出image类型字段:

HeadImageData =  dr["HeadImageData"] as byte[] ?? null
时间: 2024-10-10 02:00:27

超实用Image类的相关文章

slf4j+logback搭建超实用的日志管理模块

文章转自http://www.2cto.com/kf/201702/536097.html slf4j+logback搭建超实用的日志管理模块(对日志有编号管理):日志功能在服务器端再常见不过了,我们非常有必要记录下发生在服务器上的活动,这些日志将用于debug.统计等各种用途. slf4j+logback这种实现方式是很常见的,好处自然是方便!.在这篇文章中,你将看到如何使用logback搭建你自己的日志组件并将日志输出到文件.如何查看这些文件.如何为每个线程上的访问分配独有的一个日志id.

【转】两步实现超实用的XML存档 易使用,跨平台,防作弊(内容加密 + 防拷贝)

转载自风宇冲Unity3D教程学院 两步实现超实用的XML存档 本套存档的优点:易使用,跨平台,防作弊(内容加密 + 防拷贝) 脚本下载地址 使用方法非常简单:把GameDataManager和XmlSaver两个脚本添加至工程后(1)新建一个GameObject,起名GameDataManager并将GameDataManager脚本拖到上面.(2)在GameDataManager里的GameData类中添加需要储存的数据OK,跨平台防破解防拷贝的存档就搞定了!之后每次存档调用GameData

U3D教程宝典之两步实现超实用的XML存档

两步实现超实用的XML存档 本套存档的优点:易使用,跨平台,防作弊(内容加密 + 防拷贝) 脚本下载地址 使用方法非常简单:把GameDataManager和XmlSaver两个脚本添加至工程后(1)新建一个GameObject,起名GameDataManager并将GameDataManager脚本拖到上面.(2)在GameDataManager里的GameData类中添加需要储存的数据OK,跨平台防破解防拷贝的存档就搞定了!之后每次存档调用GameDataManager的Save函数,读档调

Android中三种超实用的滑屏方式汇总(转载)

Android中三种超实用的滑屏方式汇总 现如今主流的Android应用中,都少不了左右滑动滚屏这项功能,(貌似现在好多人使用智能机都习惯性的有事没事的左右滑屏,也不知道在干什么...嘿嘿),由于前段时间项目的需要,所以也对其研究了一下,总的来说滑屏实现有三种方式:(至于其他的实现方式目前后还没碰到...) 1.ViewPager 2.ViewFlipper 3.ViewFlow 一.ViewPager 官方文档介绍:http://developer.android.com/reference/

jvm系列(一):java类的加载机制

java类的加载机制 原文:http://www.cnblogs.com/ityouknow/p/5603287.html 1.什么是类的加载 类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对象,用来封装类在方法区内的数据结构.类的加载的最终产品是位于堆区中的Class对象,Class对象封装了类在方法区内的数据结构,并且向Java程序员提供了访问方法区内的数据结构的接口. 类加载器并不需要等到某个

iOS -- SKSpriteNode类

SKSpriteNode类 继承自 SKNode:UIResponder:NSObject 符合 NSCoding(SKNode)NSCopying(SKNode)NSObject(NSObject) 框架  /System/Library/Frameworks/SpriteKit.framework 可用性 可用于iOS 7.0或者更晚的版本 声明于 SKSpriteNode.h 参考指南 Sprite Kit Progamming Guide 概览 重要提示:这是一个初步的API或者开发技术

iOS -- SKScene类

SKScene类 继承自 SKEffectNode:SKNode:UIResponder:NSObject 符合 NSCoding(SKNode)NSCopying(SKNode)NSObject(NSObject) 框架  /System/Library/Frameworks/SpriteKit.framework 可用性 可用于iOS 7.0或者更晚的版本 声明于 SKScene.h 参考指南 Sprite Kit Progamming Guide 概览 重要提示:这是一个初步的API或者开

iOS -- SKPhysicsWorld类

SKPhysicsWorld类 继承自 NSObject 符合 NSCodingNSObject(NSObject) 框架  /System/Library/Frameworks/SpriteKit.framework 可用性 可用于iOS 7.0或者更晚的版本 声明于 SKPhysicsWorld.h 参考指南 Sprite Kit Progamming Guide 概览 重要提示:这是一个初步的API或者开发技术文档.虽然已经审阅了本文档的技术准确性,但是它不是最终的版本.本机密信息仅适用于

C#嵌套类

嵌套类顾名思义就是类或者结构中定义的类 class Container { class Nested { Nested() { } } } <1>嵌套类的默认访问权限是private ,可以指定为public,protected,private,internal,protected internal.<2>嵌套类型可以访问外部类(包裹嵌套类的类),如果要访问外部类型,要把外部类通过构造函数传进一个实例<3>嵌套类中只能访问外部类中的静态成员,不能直接访问外部类的非静态成