基线 SVN r240
SVN-Revision: r240
This commit is contained in:
@@ -0,0 +1,84 @@
|
||||
using System;
|
||||
using System.Drawing;
|
||||
using System.Runtime.InteropServices;
|
||||
using Microsoft.Win32;
|
||||
using System.Reflection;
|
||||
using System.Collections.Generic;
|
||||
using System.Windows.Forms;
|
||||
using System.IO;
|
||||
|
||||
namespace Lskj.PubArtworkPreview
|
||||
{
|
||||
public static class picture
|
||||
{
|
||||
public static byte[] GetFileBytes(string fileName, bool largeIcon)
|
||||
{
|
||||
SHFILEINFO info = new SHFILEINFO(true);
|
||||
int cbFileInfo = Marshal.SizeOf(info);
|
||||
SHGFI flags;
|
||||
if (largeIcon)
|
||||
flags = SHGFI.Icon | SHGFI.LargeIcon | SHGFI.UseFileAttributes;
|
||||
else
|
||||
flags = SHGFI.Icon | SHGFI.SmallIcon | SHGFI.UseFileAttributes;
|
||||
|
||||
SHGetFileInfo(fileName, 256, out info, (uint)cbFileInfo, flags);
|
||||
byte[] bytes = ImgToByte(Icon.FromHandle(info.hIcon).ToBitmap());
|
||||
info.hIcon = IntPtr.Zero; info.iIcon = 0; info.dwAttributes = 0; info.szDisplayName = ""; info.szTypeName = "";
|
||||
return bytes;
|
||||
}
|
||||
public static byte[] ImgToByte(Image img)
|
||||
{
|
||||
try
|
||||
{
|
||||
using (MemoryStream ms = new MemoryStream())
|
||||
{
|
||||
byte[] imagedata = null;
|
||||
img.Save(ms, System.Drawing.Imaging.ImageFormat.Png);
|
||||
imagedata = ms.GetBuffer();
|
||||
return imagedata;
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageBox.Show(ex.ToString());
|
||||
return null;
|
||||
}
|
||||
}
|
||||
[DllImport("Shell32.dll")]
|
||||
private static extern int SHGetFileInfo
|
||||
(
|
||||
string pszPath,
|
||||
uint dwFileAttributes,
|
||||
out SHFILEINFO psfi,
|
||||
uint cbfileInfo,
|
||||
SHGFI uFlags
|
||||
);
|
||||
|
||||
[StructLayout(LayoutKind.Sequential)]
|
||||
private struct SHFILEINFO
|
||||
{
|
||||
public SHFILEINFO(bool b)
|
||||
{
|
||||
hIcon = IntPtr.Zero; iIcon = 0; dwAttributes = 0; szDisplayName = ""; szTypeName = "";
|
||||
}
|
||||
public IntPtr hIcon;
|
||||
public int iIcon;
|
||||
public uint dwAttributes;
|
||||
[MarshalAs(UnmanagedType.LPStr, SizeConst = 260)]
|
||||
public string szDisplayName;
|
||||
[MarshalAs(UnmanagedType.LPStr, SizeConst = 80)]
|
||||
public string szTypeName;
|
||||
}
|
||||
private enum SHGFI
|
||||
{
|
||||
SmallIcon = 0x00000001,
|
||||
LargeIcon = 0x00000000,
|
||||
Icon = 0x00000100,
|
||||
DisplayName = 0x00000200,
|
||||
Typename = 0x00000400,
|
||||
SysIconIndex = 0x00004000,
|
||||
UseFileAttributes = 0x00000010
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user