日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

C# Image 学习总结

發布時間:2025/4/14 C# 51 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C# Image 学习总结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Image 類

https://msdn.microsoft.com/zh-cn/library/system.drawing.image.aspx


.NET Framework (current version) 其他版本?
?
一個抽象基類,提供了用于功能 Bitmap 和 Metafile 繼承的類。
命名空間: ? System.Drawing
程序集: ?System.Drawing(位于 System.Drawing.dll)


繼承層次結構
System.Object
??System.MarshalByRefObject
????System.Drawing.Image
??????System.Drawing.Bitmap
??????System.Drawing.Imaging.Metafile


語法
C#C++F#VB
[SerializableAttribute]
[TypeConverterAttribute(typeof(ImageConverter))]
[ComVisibleAttribute(true)]
public abstract class Image : MarshalByRefObject, ISerializable,?
ICloneable, IDisposable
屬性
名稱 說明
System_CAPS_pubproperty Flags
獲取特性的像素數據的這標志 Image。
System_CAPS_pubproperty FrameDimensionsList
獲取表示在此幀的維數的 Guid 的數組, Image。
System_CAPS_pubproperty Height
獲取的高度,以像素為單位,這 Image。
System_CAPS_pubproperty HorizontalResolution
獲取以每英寸的像素為單位的水平分辨率 Image。
System_CAPS_pubproperty Palette
獲取或設置用于此目的的顏色調色板 Image。
System_CAPS_pubproperty PhysicalDimension
獲取此圖像的寬度和高度。
System_CAPS_pubproperty PixelFormat
獲取此像素格式 Image。
System_CAPS_pubproperty PropertyIdList
獲取存儲于此的屬性項的 Id Image。
System_CAPS_pubproperty PropertyItems
獲取的所有屬性項 (元數據片) 存儲在此 Image。
System_CAPS_pubproperty RawFormat
獲取此文件格式 Image。
System_CAPS_pubproperty Size
獲取此圖像的寬度和高度(以像素為單位)。
System_CAPS_pubproperty Tag
獲取或設置提供有關圖像的附加數據的對象。
System_CAPS_pubproperty VerticalResolution
獲取以每英寸的像素為單位的垂直分辨率 Image。
System_CAPS_pubproperty Width
獲取的寬度,以像素為單位,這 Image。
方法
名稱 說明
System_CAPS_pubmethod Clone()
創建此 Image 的一個精確副本。
System_CAPS_pubmethod CreateObjRef(Type)
創建包含生成用來與遠程對象通信的代理所需的所有相關信息的對象。(繼承自 MarshalByRefObject。)
System_CAPS_pubmethod Dispose()
釋放此 Image 使用的所有資源。
System_CAPS_protmethod Dispose(Boolean)
釋放由 Image 占用的非托管資源,還可以另外再釋放托管資源。
System_CAPS_pubmethod Equals(Object)
確定指定的對象是否等于當前對象。(繼承自 Object。)
System_CAPS_protmethod Finalize()
在垃圾回收將某一對象回收前允許該對象嘗試釋放資源并執行其他清理操作。(覆蓋 Object.Finalize()。)
System_CAPS_pubmethodSystem_CAPS_static FromFile(String)
創建 Image 從指定的文件。
System_CAPS_pubmethodSystem_CAPS_static FromFile(String,?Boolean)
創建 Image 從指定的文件使用嵌入的顏色管理信息在該文件中。
System_CAPS_pubmethodSystem_CAPS_static FromHbitmap(IntPtr)
創建 Bitmap 從 GDI 位圖的句柄。
System_CAPS_pubmethodSystem_CAPS_static FromHbitmap(IntPtr,?IntPtr)
創建 Bitmap 從 GDI 位圖和 GDI 調色板的句柄的句柄。
System_CAPS_pubmethodSystem_CAPS_static FromStream(Stream)
創建 Image 從指定的數據流。
System_CAPS_pubmethodSystem_CAPS_static FromStream(Stream,?Boolean)
創建 Image 從指定的數據流 (可選) 使用嵌入的顏色管理信息該流中。
System_CAPS_pubmethodSystem_CAPS_static FromStream(Stream,?Boolean,?Boolean)
創建 Image 從指定的數據流 (可選) 使用嵌入的顏色管理信息并驗證圖像數據。
System_CAPS_pubmethod GetBounds(GraphicsUnit)
以指定的單位獲取圖像的界限。
System_CAPS_pubmethod GetEncoderParameterList(Guid)
返回有關指定的圖像編碼器所支持的參數的信息。
System_CAPS_pubmethod GetFrameCount(FrameDimension)
返回指定維度的幀數。
System_CAPS_pubmethod GetHashCode()
作為默認哈希函數。(繼承自 Object。)
System_CAPS_pubmethod GetLifetimeService()
檢索當前生存期的服務對象,用于控制此實例的生存期策略。(繼承自 MarshalByRefObject。)
System_CAPS_pubmethodSystem_CAPS_static GetPixelFormatSize(PixelFormat)
返回指定像素格式的顏色深度(每個像素的位數)。
System_CAPS_pubmethod GetPropertyItem(Int32)
獲取指定的屬性項從此 Image。
System_CAPS_pubmethod GetThumbnailImage(Int32,?Int32,?Image.GetThumbnailImageAbort,?IntPtr)
返回此縮略圖 Image。
System_CAPS_pubmethod GetType()
獲取當前實例的 Type。(繼承自 Object。)
System_CAPS_pubmethod InitializeLifetimeService()
獲取使用生存期服務對象來控制此實例的生存期策略。(繼承自 MarshalByRefObject。)
System_CAPS_pubmethodSystem_CAPS_static IsAlphaPixelFormat(PixelFormat)
返回一個值,該值指示的像素格式是否為此 Image 包含 alpha 信息。
System_CAPS_pubmethodSystem_CAPS_static IsCanonicalPixelFormat(PixelFormat)
返回一個值,該值指示該像素格式是否為每個像素 32 位。
System_CAPS_pubmethodSystem_CAPS_static IsExtendedPixelFormat(PixelFormat)
返回一個值,該值指示該像素格式是否為每個像素 64 位。
System_CAPS_protmethod MemberwiseClone()
創建當前 Object 的淺表副本。(繼承自 Object。)
System_CAPS_protmethod MemberwiseClone(Boolean)
創建當前的淺表副本 MarshalByRefObject 對象。(繼承自 MarshalByRefObject。)
System_CAPS_pubmethod RemovePropertyItem(Int32)
從這中移除指定的屬性項 Image。
System_CAPS_pubmethod RotateFlip(RotateFlipType)
旋轉、 翻轉,或將旋轉和翻轉 Image。
System_CAPS_pubmethod Save(Stream,?ImageCodecInfo,?EncoderParameters)
使用指定的編碼器和圖像編碼器參數,將該圖像保存到指定的流。
System_CAPS_pubmethod Save(Stream,?ImageFormat)
將此圖像以指定的格式保存到指定的流中。
System_CAPS_pubmethod Save(String)
這會將保存 Image 寫入指定的文件或流。
System_CAPS_pubmethod Save(String,?ImageCodecInfo,?EncoderParameters)
這會將保存 Image 寫入指定的文件,使用指定的編碼器和圖像編碼器參數。
System_CAPS_pubmethod Save(String,?ImageFormat)
這會將保存 Image 寫入指定的文件中指定的格式。
System_CAPS_pubmethod SaveAdd(EncoderParameters)
將幀添加到上次對 Save 方法調用時所指定的文件或流中。 使用此方法將多幀圖像中的選定幀保存到另一個多幀圖像。
System_CAPS_pubmethod SaveAdd(Image,?EncoderParameters)
將幀添加到上次對 Save 方法調用時所指定的文件或流中。
System_CAPS_pubmethod SelectActiveFrame(FrameDimension,?Int32)
選擇由維度和索引指定的幀。
System_CAPS_pubmethod SetPropertyItem(PropertyItem)
在此 Image 中存儲一個屬性項(元數據片)。
System_CAPS_pubmethod ToString()
返回表示當前對象的字符串。(繼承自 Object。)
顯式接口實現
名稱 說明
System_CAPS_pubinterfaceSystem_CAPS_privmethod ISerializable.GetObjectData(SerializationInfo,?StreamingContext)
使用將目標對象序列化所需的數據填充 SerializationInfo。
備注
若要繪制 Image 在 Windows 窗體中,應使用之一 DrawImage 方法。
示例
下面的代碼示例旨在為使用 Windows 窗體。 它是處理程序 Paint 事件。 一個 Graphics 對象傳遞給事件,并且使用窗體上繪制圖像。 該代碼執行下列操作:
從名為 sampimag.jpg 位于同一個文件中創建的映像。 此文件必須位于應用程序可執行文件所在的文件夾。
創建要在該處繪制圖像的左上角的點。
窗體上繪制不成比例的圖像。
C#C++VB
private void ImageExampleForm_Paint(object sender, PaintEventArgs e)
{ ? ? ? ??
? ? // Create image.
? ? Image newImage = Image.FromFile("SampImag.jpg");


? ? // Create Point for upper-left corner of image.
? ? Point ulCorner = new Point(100, 100);


? ? // Draw image to screen.
? ? e.Graphics.DrawImage(newImage, ulCorner);
}
版本信息
.NET Framework?
自 1.1 起可用
線程安全
此類型的所有公共靜態(Visual Basic 中的 已共享 在 Visual Basic 中)成員都是線程安全的。不保證所有實例成員都是線程安全的。
另請參閱
System.Drawing 命名空間
圖像、位圖和圖元文件
使用圖像、位圖、圖標和圖元文件
========

?C# Image 加載圖片

http://blog.csdn.net/cai_huan_123/article/details/42524001
Image.FromFile ?一旦使用后,對應的文件在一直調用其生成的Image對象被Disponse前都不會被解除鎖定,這就造成了一個問題,就是在這個圖形被解鎖前無法對圖像進行操作(比如刪除,修改等操作).


在以前用的過程中曾用過下面三個方法解決問題.


第一種方法,在要進行文件操作前將Image對象銷毀.


PictureBox picbox;


if(picbox.Image!=null)picbox.Image.Disponse();


第二種方法,就是在加載圖像的時候用一種方法替代:


System.Drawing.Image img = System.Drawing.Image.FromFile(filepath);


System.Drawing.Image bmp = new System.Drawing.Bitmap(img.Width, img.Height, ? ?System.Drawing.Imaging.PixelFormat.Format32bppArgb);


System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(bmp);


g.DrawImage(img, 0, 0);


g.Flush();


g.Dispose();


img.Dispose();


//下面開始使用bmp作為顯示的Image對象


System.Drawing.Image img = System.Drawing.Image.FromFile(filepath);


System.Drawing.Image bmp = new System.Drawing.Bitmap(img);


img.Dispose();


方法四:


fs = New System.IO.FileStream("C:\WINNT\Web\Wallpaper\Fly Away.jpg",
IO.FileMode.Open, IO.FileAccess.Read)
PictureBox1.Image = System.Drawing.Image.FromStream(fs)
fs.Close()


Image類的FromFile方法打開文件と后沒有關閉,導致文件鎖定,無法進行刪除、移動等操作。


  該而使用FromStream方法,代碼如下:


  //讀取文件流
FileStream fileStream = new FileStream(iconPath, FileMode.Open, FileAccess.Read);


int byteLength = (int)fileStream.Length;
byte[] fileBytes = new byte[byteLength];
fileStream.Read(fileBytes, 0, byteLength);


//文件流關閉,文件解除鎖定
fileStream.Close();


Pictrue.Image = Image.FromStream(new MemoryStream(fileBytes));


因為FromStream方法參數應用的流必須一直保持打開,故代碼中有一個文件流向MemeoryStream流的轉換,從而可以關閉文件流,保持MemoryStream流的打開狀態。
========

C#如何釋放已經加載的圖片

http://www.cnblogs.com/netlyf/p/3781630.html
使用Image.FromFile取磁盤上的圖片時,這個方法會鎖定圖片文件,而且會導致內存占用增大, 有幾種方法解決:
一:將Image類轉換成Bitmap類
System.Drawing.Image img = System.Drawing.Image.FromFile(filepath);
System.Drawing.Image bmp = new System.Drawing.Bitmap(img);
img.Dispose();
然后使用 bmp作為PictureBox的圖片源
二:從流中讀取
FileStream fileStream = new FileStream("文件名", FileMode.Open, FileAccess.Read);
pictureBox1.Image = Image.FromStream(fileStream);
fileStream.Close();
fileStream.Dispose();?


原因:一個圖像對象從一個文件構造時該文件仍保留鎖定對象的生存期。所以關鍵是要使用 Graphics.DrawImage()方法或Drawing.Bitmap()方法來將映像復制到新位圖Bitmap對象,然后Bitmap和Graphics就可以釋放了?;蛘哂檬褂肍ileStream的方式將文件讀成流。
========

c#在sql中存取圖片image示例

http://www.jb51.net/article/48035.htm
這篇文章主要介紹了c#在sql中存取圖片image示例,需要的朋友可以參考下
..(1)控制臺應用程序下演示插入圖片


復制代碼 代碼如下:
public void InsertIMG()
{
//將需要存儲的圖片讀取為數據流
FileStream fs = new FileStream(@"E:\c.jpg", FileMode.Open,FileAccess.Read);
Byte[] btye2 = new byte[fs.Length];
fs.Read(btye2 , 0, Convert.ToInt32(fs.Length));
fs.Close();


using (SqlConnection conn = new SqlConnection(sqlconnstr))
{
conn.Open();
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandText = "insert into T_Img(imgfile) values(@imgfile)";
SqlParameter par = new SqlParameter("@imgfile", SqlDbType.Image);
par.Value = bt;
cmd.Parameters.Add(par);


int t=(int)(cmd.ExecuteNonQuery());
if (t > 0)
{
Console.WriteLine("插入成功");
}
conn.Close();
}
}


(2)控制臺應用程序下讀出并生成圖片到物理位置


復制代碼 代碼如下:
public void Read()
{
byte[] MyData = new byte[0];
using (SqlConnection conn = new SqlConnection(sqlconnstr))
{
conn.Open();
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandText = "select * from T_img";
SqlDataReader sdr = cmd.ExecuteReader();
sdr.Read();
MyData = (byte[])sdr["ImgFile"];//讀取第一個圖片的位流
int ArraySize= MyData.GetUpperBound(0);//獲得數據庫中存儲的位流數組的維度上限,用作讀取流的上限


FileStream fs = new FileStream(@"c:\00.jpg", FileMode.OpenOrCreate, FileAccess.Write);
fs.Write(MyData, 0, ArraySize);
fs.Close(); ? //-- 寫入到c:\00.jpg。
conn.Close();
Console.WriteLine("讀取成功");//查看硬盤上的文件
}
}


(3)Web下picshow.aspx頁將圖片讀取出來并寫入到瀏覽器上呈現


復制代碼 代碼如下:
public void Read()
{
byte[] MyData = new byte[0];
using (SqlConnection conn = new SqlConnection(sqlconnstr))
{
conn.Open();
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandText = "select * from T_img";
SqlDataReader sdr = cmd.ExecuteReader();
sdr.Read();
MyData = (byte[])sdr["ImgFile"];
Response.ContentType = "image/gif";
Response.BinaryWrite(MyData);
conn.Close();
Response.Write("讀取成功");
}
(4)在web中可以如上picshow.aspx頁面讀取并顯示圖片,而真正引用該圖片時如下示例


復制代碼 代碼如下:
<img src="picshow.aspx" width="500" height="300" />


?(5)Winform下將圖片寫入到sql數據庫image類型字段中的方法和以上方法基本一致,僅區別于可以利用多個對話框來幫助選取存儲圖片等,各個屬性可以方便的利用上


(6)Winform下讀取圖片在picturebox控件中顯示出來


方法一:利用MemoryStream 和System.Drawing.Image


復制代碼 代碼如下:
public void Read()
{
byte[] MyData = new byte[0];
using (SqlConnection conn = new SqlConnection(sqlconnstr))
{
conn.Open();
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandText = "select * from T_img";
SqlDataReader sdr = cmd.ExecuteReader();
sdr.Read();
MyData = (byte[])sdr["ImgFile"];


MemoryStream mystream = new MemoryStream(MyData);
//用指定的數據流來創建一個image圖片
System.Drawing.Image img = System.Drawing.Image.FromStream(mystream, true);


System.Windows.Forms.PictureBox picbox = new PictureBox();
picbox.Image = img;
picbox.Left = 30;
picbox.Top = 80;
picbox.Width = 800;
picbox.Height = 500;
this.Controls.Add(picbox);


mystream.Close();
conn.Close();
}
}


方法二:將流直接讀取成圖片并寫入到物理位置,然后再行利用該圖片呈現


復制代碼 代碼如下:
void Read()
{
using (SqlConnection conn = new SqlConnection(sqlconnstr))
{
conn.Open();
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandText = "select * from T_img";
SqlDataReader sdr = cmd.ExecuteReader();
sdr.Read();


byte[] Image_img = (byte[])sdr["ImgFile"];
if (Image_img.Length == 0)
{
return;
}
int filelength = Image_img.Length;
string imageName = "1.jpg";
string myUrl = Environment.CurrentDirectory + "\\" + imageName;
FileStream fs = new FileStream(myUrl, FileMode.OpenOrCreate,FileAccess.Write);
BinaryWriter BW = new BinaryWriter(fs);
BW.BaseStream.Write(Image_img, 0, filelength);
BW.Flush();
BW.Close();
System.Windows.Forms.PictureBox picbox = new PictureBox();


//為picbox添加圖片方法一
//picbox.ImageLocation = myUrl;
//picbox.Width = 800;
//picbox.Height = 300;


//為picbox添加圖片方法二
Bitmap bitmap = new Bitmap(myUrl);
picbox.Width = 100;//bitmap.Width;
picbox.Height = 80;//bitmap.Height;
picbox.Image = (Image)bitmap;
picbox.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
picbox.Left = 20;
picbox.Top = 30;


this.Controls.Add(picbox);
conn.Close();
}
}
========

C#利用原圖和水印圖的重疊簡單實現水印的方法

http://www.jb51.net/article/82764.htm
這篇文章主要介紹了C#利用原圖和水印圖的重疊簡單實現水印的方法,實例演示了完整的水印操作類實現方法,需要的朋友可以參考下


圖片操作類


/// <summary> /// 獲取一個圖片按等比例縮小后的大小。 /// </summary> /// <param name="maxWidth">需要縮小到的寬度</param> /// <param name="maxHeight">需要縮小到的高度</param> /// <param name="imageOriginalWidth">圖片的原始寬度</param> /// <param name="imageOriginalHeight">圖片的原始高度</param> /// <returns>返回圖片按等比例縮小后的實際大小</returns> public static Size GetNewSize(int maxWidth, int maxHeight, int imageOriginalWidth, int imageOriginalHeight) { ? double w = 0.0; ? double h = 0.0; ? double sw = Convert.ToDouble(imageOriginalWidth); ? double sh = Convert.ToDouble(imageOriginalHeight); ? double mw = Convert.ToDouble(maxWidth); ? double mh = Convert.ToDouble(maxHeight); ? if (sw < mw && sh < mh) ? { ? ? w = sw; ? ? h = sh; ? } ? else if ((sw / sh) > (mw / mh)) ? { ? ? w = maxWidth; ? ? h = (w * sh) / sw; ? } ? else ?{ ? ? h = maxHeight; ? ? w = (h * sw) / sh; ? } ? return new Size(Convert.ToInt32(w), Convert.ToInt32(h)); } /// <summary> /// 對給定的一個圖片(Image對象)生成一個指定大小的縮略圖。 /// </summary> /// <param name="originalImage">原始圖片</param> /// <param name="thumMaxWidth">縮略圖的寬度</param> /// <param name="thumMaxHeight">縮略圖的高度</param> /// <returns>返回縮略圖的Image對象</returns> public static System.Drawing.Image GetThumbNailImage(System.Drawing.Image originalImage, int thumMaxWidth, int thumMaxHeight) { ? Size thumRealSize = Size.Empty; ? System.Drawing.Image newImage = originalImage; ? Graphics graphics = null; ? try ?{ ? ? thumRealSize = GetNewSize(thumMaxWidth, thumMaxHeight, originalImage.Width, originalImage.Height); ? ? newImage = new Bitmap(thumRealSize.Width, thumRealSize.Height); ? ? graphics = Graphics.FromImage(newImage); ? ? graphics.CompositingQuality = CompositingQuality.HighQuality; ? ? graphics.InterpolationMode = InterpolationMode.HighQualityBicubic; ? ? graphics.SmoothingMode = SmoothingMode.HighQuality; ? ? graphics.Clear(Color.Transparent); ? ? graphics.DrawImage(originalImage, new Rectangle(0, 0, thumRealSize.Width, thumRealSize.Height), new Rectangle(0, 0, originalImage.Width, originalImage.Height), GraphicsUnit.Pixel); ? } ? catch { } ? finally ?{ ? ? if (graphics != null) ? ? { ? ? ? graphics.Dispose(); ? ? ? graphics = null; ? ? } ? } ? return newImage; } /// <summary> /// 對給定的一個圖片文件生成一個指定大小的縮略圖。 /// </summary> /// <param name="originalImage">圖片的物理文件地址</param> /// <param name="thumMaxWidth">縮略圖的寬度</param> /// <param name="thumMaxHeight">縮略圖的高度</param> /// <returns>返回縮略圖的Image對象</returns> public static System.Drawing.Image GetThumbNailImage(string imageFile, int thumMaxWidth, int thumMaxHeight) { ? System.Drawing.Image originalImage = null; ? System.Drawing.Image newImage = null; ? try ?{ ? ? originalImage = System.Drawing.Image.FromFile(imageFile); ? ? newImage = GetThumbNailImage(originalImage, thumMaxWidth, thumMaxHeight); ? } ? catch { } ? finally ?{ ? ? if (originalImage != null) ? ? { ? ? ? originalImage.Dispose(); ? ? ? originalImage = null; ? ? } ? } ? return newImage; } /// <summary> /// 對給定的一個圖片文件生成一個指定大小的縮略圖,并將縮略圖保存到指定位置。 /// </summary> /// <param name="originalImageFile">圖片的物理文件地址</param> /// <param name="thumbNailImageFile">縮略圖的物理文件地址</param> /// <param name="thumMaxWidth">縮略圖的寬度</param> /// <param name="thumMaxHeight">縮略圖的高度</param> public static void MakeThumbNail(string originalImageFile, string thumbNailImageFile, int thumMaxWidth, int thumMaxHeight) { ? System.Drawing.Image newImage = GetThumbNailImage(originalImageFile, thumMaxWidth, thumMaxHeight); ? try ?{ ? ? newImage.Save(thumbNailImageFile, ImageFormat.Jpeg); ? } ? catch ?{ } ? finally ?{ ? ? newImage.Dispose(); ? ? newImage = null; ? } } /// <summary> /// 將一個圖片的內存流調整為指定大小,并返回調整后的內存流。 /// </summary> /// <param name="originalImageStream">原始圖片的內存流</param> /// <param name="newWidth">新圖片的寬度</param> /// <param name="newHeight">新圖片的高度</param> /// <returns>返回調整后的圖片的內存流</returns> public static MemoryStream ResizeImage(Stream originalImageStream, int newWidth, int newHeight) { ? MemoryStream newImageStream = null; ? System.Drawing.Image newImage = Globals.GetThumbNailImage(System.Drawing.Image.FromStream(originalImageStream), newWidth, newHeight); ? if (newImage != null) ? { ? ? newImageStream = new MemoryStream(); ? ? newImage.Save(newImageStream, ImageFormat.Jpeg); ? } ? return newImageStream; } /// <summary> /// 將一個內存流保存為磁盤文件。 /// </summary> /// <param name="stream">內存流</param> /// <param name="newFile">目標磁盤文件地址</param> public static void SaveStreamToFile(Stream stream, string newFile) { ? if (stream == null || stream.Length == 0 || string.IsNullOrEmpty(newFile)) ? { ? ? return; ? } ? byte[] buffer = new byte[stream.Length]; ? stream.Position = 0; ? stream.Read(buffer, 0, buffer.Length); ? FileStream fileStream = new FileStream(newFile, FileMode.OpenOrCreate, FileAccess.Write); ? fileStream.Write(buffer, 0, buffer.Length); ? fileStream.Flush(); ? fileStream.Close(); ? fileStream.Dispose(); } /// <summary> /// 對一個指定的圖片加上圖片水印效果。 /// </summary> /// <param name="imageFile">圖片文件地址</param> /// <param name="waterImage">水印圖片(Image對象)</param> public static void CreateImageWaterMark(string imageFile, System.Drawing.Image waterImage) { ? if (string.IsNullOrEmpty(imageFile) || !File.Exists(imageFile) || waterImage == null) ? { ? ? return; ? } ? System.Drawing.Image originalImage = System.Drawing.Image.FromFile(imageFile); ? if (originalImage.Width - 10 < waterImage.Width || originalImage.Height - 10 < waterImage.Height) ? { ? ? return; ? } ? Graphics graphics = Graphics.FromImage(originalImage); ? int x = originalImage.Width - waterImage.Width - 10; ? int y = originalImage.Height - waterImage.Height - 10; ? int width = waterImage.Width; ? int height = waterImage.Height; ? graphics.DrawImage(waterImage, new Rectangle(x, y, width, height), 0, 0, width, height, GraphicsUnit.Pixel); ? graphics.Dispose(); ? MemoryStream stream = new MemoryStream(); ? originalImage.Save(stream, ImageFormat.Jpeg); ? originalImage.Dispose(); ? System.Drawing.Image imageWithWater = System.Drawing.Image.FromStream(stream); ? imageWithWater.Save(imageFile); ? imageWithWater.Dispose(); } /// <summary> /// 對一個指定的圖片加上文字水印效果。 /// </summary> /// <param name="imageFile">圖片文件地址</param> /// <param name="waterText">水印文字內容</param> public static void CreateTextWaterMark(string imageFile, string waterText) { ? if (string.IsNullOrEmpty(imageFile) || string.IsNullOrEmpty(waterText) || !File.Exists(imageFile)) ? { ? ? return; ? } ? System.Drawing.Image originalImage = System.Drawing.Image.FromFile(imageFile); ? Graphics graphics = Graphics.FromImage(originalImage); ? graphics.SmoothingMode = SmoothingMode.HighQuality; ? graphics.TextRenderingHint = TextRenderingHint.ClearTypeGridFit; ? graphics.CompositingQuality = CompositingQuality.HighQuality; ? graphics.InterpolationMode = InterpolationMode.HighQualityBicubic; ? SolidBrush brush = new SolidBrush(Color.FromArgb(153, 255, 255, 255)); ? Font waterTextFont = new Font("Arial", 16, FontStyle.Regular); ? SizeF waterTextSize = graphics.MeasureString(waterText, waterTextFont); ? float x = (float)originalImage.Width - waterTextSize.Width - 10F; ? float y = (float)originalImage.Height - waterTextSize.Height - 10F; ? graphics.DrawString(waterText, waterTextFont, brush, x, y); ? graphics.Dispose(); ? brush.Dispose(); ? MemoryStream stream = new MemoryStream(); ? originalImage.Save(stream, ImageFormat.Jpeg); ? originalImage.Dispose(); ? System.Drawing.Image imageWithWater = System.Drawing.Image.FromStream(stream); ? imageWithWater.Save(imageFile); ? imageWithWater.Dispose(); } /// <summary> /// 判斷上傳組件是否包含內容。 /// </summary> /// <param name="fileUpload">ASP.NET 2.0標準上傳組件</param> /// <returns>如果數據有效,則返回True,否則返回False</returns> public static bool IsAttachmentValid(FileUpload fileUpload) { ? if (fileUpload != null && ? ? fileUpload.PostedFile != null && ? ? !string.IsNullOrEmpty(fileUpload.PostedFile.FileName) && ? ? fileUpload.PostedFile.ContentLength > 0) ? { ? ? return true; ? } ? return false; }?
public class ImageHelper { ? #region " 水印存放的相對路徑 " ? public static string GetLogoPath() ? { ? ? return "/images/logo.png"; ?///水印圖路徑 ? } ? #endregion ? #region " 圖片水印 " ? // <summary> ? // 在圖片上生成圖片水印,此方法不支持Gif類型的圖片 ? // </summary> ? // <param name="Path">原服務器圖片路徑</param> ? // <param name="Path_syp">生成的帶圖片水印的圖片路徑</param> ? // <param name="Path_sypf">水印圖片路徑</param> ? public static void MarkImage(Stream InUploadImagePath, string inLogoImagePath, string InSavePath) ? { ? ? System.Drawing.Image Image = System.Drawing.Image.FromStream(InUploadImagePath); ? ? System.Drawing.Image newimage = Image.FromFile(Current.Server.MapPath(inLogoImagePath)); ? ? Graphics g = Graphics.FromImage(Image); ? ? g.DrawImage(newimage, new Rectangle(Image.Width - newimage.Width, Image.Height - newimage.Height, newimage.Width, newimage.Height), 0, 0, newimage.Width, newimage.Height, GraphicsUnit.Pixel); ? ? try { ? ? ? Image.Save(Current.Server.MapPath(InSavePath)); ? ? } ? ? catch (Exception ex) { ? ? } ? ? finally { ? ? ? g.Dispose(); ? ? ? Image.Dispose(); ? ? ? newimage.Dispose(); ? ? } ? } ? #endregion }?
更多關于C#相關內容感興趣的讀者可查看本站專題:《C#圖片操作技巧匯總》、《WinForm控件用法總結》、《C#數據結構與算法教程》、《C#常見控件用法教程》、《C#面向對象程序設計入門教程》及《C#程序設計之線程使用技巧總結》
========

C#給圖片加水印標記,可設置透明度

http://www.cnblogs.com/huangcong/archive/2010/03/26/1697319.html
/// <summary> ?
/// Creating a Watermarked Photograph with GDI+ for .NET ?
/// </summary> ?
/// <param name="rSrcImgPath">原始圖片的物理路徑</param> ?
/// <param name="rMarkImgPath">水印圖片的物理路徑</param> ?
/// <param name="rMarkText">水印文字(不顯示水印文字設為空串)</param> ?
/// <param name="rDstImgPath">輸出合成后的圖片的物理路徑</param> ?
/// @整理: anyrock@mending.cn ?
public void BuildWatermark(string rSrcImgPath,string rMarkImgPath,string rMarkText,string rDstImgPath) ?
{ ?
? ? ?//以下(代碼)從一個指定文件創建了一個Image 對象,然后為它的 Width 和 Height定義變量。 ?
? ? ?//這些長度待會被用來建立一個以24 bits 每像素的格式作為顏色數據的Bitmap對象。 ?
? ? ?Image imgPhoto = Image.FromFile(rSrcImgPath); ?
? ? ?int phWidth = imgPhoto.Width; ?
? ? ?int phHeight = imgPhoto.Height; ?
? ? ?Bitmap bmPhoto=new Bitmap(phWidth,phHeight, PixelFormat.Format24bppRgb); ?
? ? ?bmPhoto.SetResolution(72,72); ?
? ? ?Graphics grPhoto = Graphics.FromImage(bmPhoto); ?
? ? ?//這個代碼載入水印圖片,水印圖片已經被保存為一個BMP文件,以綠色(A=0,R=0,G=255,B=0)作為背景顏色。 ?
? ? ?//再一次,會為它的Width 和Height定義一個變量。 ?
? ? ?Image imgWatermark = new Bitmap(rMarkImgPath); ?
? ? ?int wmWidth = imgWatermark.Width; ?
? ? ?int wmHeight = imgWatermark.Height; ?
? ? ?//這個代碼以100%它的原始大小繪制imgPhoto 到Graphics 對象的(x=0,y=0)位置。 ?
? ? ?//以后所有的繪圖都將發生在原來照片的頂部。 ?
? ? ?grPhoto.SmoothingMode = SmoothingMode.AntiAlias; ?
? ? ?grPhoto.DrawImage( ?
? ? ? ? ? imgPhoto, ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? new Rectangle(0, 0, phWidth, phHeight), ??
? ? ? ? ? 0, ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? 0, ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? phWidth, ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? phHeight, ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? GraphicsUnit.Pixel); ?
? ? ?//為了最大化版權信息的大小,我們將測試7種不同的字體大小來決定我們能為我們的照片寬度使用的可能的最大大小。 ?
? ? ?//為了有效地完成這個,我們將定義一個整型數組,接著遍歷這些整型值測量不同大小的版權字符串。 ?
? ? ?//一旦我們決定了可能的最大大小,我們就退出循環,繪制文本 ?
? ? ?int[] sizes = new int[]{16,14,12,10,8,6,4}; ?
? ? ?Font crFont = null; ??
? ? ?SizeF crSize = new ?SizeF(); ??
? ? ?for (int i=0 ;i<7; i++) ?
? ? ?{ ??
? ? ? ? ? crFont = new Font("arial", sizes[i], ?
? ? ? ? ? ? ? ? FontStyle.Bold); ?
? ? ? ? ? crSize = grPhoto.MeasureString(rMarkText, ?
? ? ? ? ? ? ? ? crFont); ?
? ? ? ? ? if((ushort)crSize.Width < (ushort)phWidth) ?
? ? ? ? ? ? ? ? break; ?
? ? ?} ?
? ? ?//因為所有的照片都有各種各樣的高度,所以就決定了從圖象底部開始的5%的位置開始。 ?
? ? ?//使用rMarkText字符串的高度來決定繪制字符串合適的Y坐標軸。 ?
? ? ?//通過計算圖像的中心來決定X軸,然后定義一個StringFormat 對象,設置StringAlignment 為Center。 ?
? ? ?int yPixlesFromBottom = (int)(phHeight *.05); ?
? ? ?float yPosFromBottom = ((phHeight - ??
? ? ? ? ? yPixlesFromBottom)-(crSize.Height/2)); ?
? ? ?float xCenterOfImg = (phWidth/2); ?
? ? ?StringFormat StrFormat = new StringFormat(); ?
? ? ?StrFormat.Alignment = StringAlignment.Center; ?
? ? ?//現在我們已經有了所有所需的位置坐標來使用60%黑色的一個Color(alpha值153)創建一個SolidBrush 。 ?
? ? ?//在偏離右邊1像素,底部1像素的合適位置繪制版權字符串。 ?
? ? ?//這段偏離將用來創建陰影效果。使用Brush重復這樣一個過程,在前一個繪制的文本頂部繪制同樣的文本。 ?
? ? ?SolidBrush semiTransBrush2 = ??
? ? ? ? ? new SolidBrush(Color.FromArgb(153, 0, 0,0)); ??
? ? ?grPhoto.DrawString(rMarkText, ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? crFont, ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? ? ? ? semiTransBrush2, ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? new PointF(xCenterOfImg+1,yPosFromBottom+1), ??
? ? ? ? ? StrFormat); ?
? ? ?SolidBrush semiTransBrush = new SolidBrush( ?
? ? ? ? ? Color.FromArgb(153, 255, 255, 255)); ?
? ? ?grPhoto.DrawString(rMarkText, ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? crFont, ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? ? ? ? semiTransBrush, ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? ? ? ? new PointF(xCenterOfImg,yPosFromBottom), ? ?
? ? ? ? ? StrFormat); ?
? ? ?//根據前面修改后的照片創建一個Bitmap。把這個Bitmap載入到一個新的Graphic對象。 ?
? ? ?Bitmap bmWatermark = new Bitmap(bmPhoto); ??
? ? ?bmWatermark.SetResolution( ?
? ? ? ? ? imgPhoto.HorizontalResolution, ??
? ? ? ? ? imgPhoto.VerticalResolution); ?
? ? ?Graphics grWatermark = ?
? ? ? ? ? Graphics.FromImage(bmWatermark); ?
? ? ?//通過定義一個ImageAttributes 對象并設置它的兩個屬性,我們就是實現了兩個顏色的處理,以達到半透明的水印效果。 ?
? ? ?//處理水印圖象的第一步是把背景圖案變為透明的(Alpha=0, R=0, G=0, B=0)。我們使用一個Colormap 和定義一個RemapTable來做這個。 ?
? ? ?//就像前面展示的,我的水印被定義為100%綠色背景,我們將搜到這個顏色,然后取代為透明。 ?
? ? ?ImageAttributes imageAttributes = ?
? ? ? ? ? new ImageAttributes(); ?
? ? ?ColorMap colorMap = new ColorMap(); ?
? ? ?colorMap.OldColor=Color.FromArgb(255, 0, 255, 0); ?
? ? ?colorMap.NewColor=Color.FromArgb(0, 0, 0, 0); ?
? ? ?ColorMap[] remapTable = {colorMap}; ?
? ? ?//第二個顏色處理用來改變水印的不透明性。 ?
? ? ?//通過應用包含提供了坐標的RGBA空間的5x5矩陣來做這個。 ?
? ? ?//通過設定第三行、第三列為0.3f我們就達到了一個不透明的水平。結果是水印會輕微地顯示在圖象底下一些。 ?
? ? ?imageAttributes.SetRemapTable(remapTable, ?
? ? ? ? ? ColorAdjustType.Bitmap); ?
? ? ?float[][] colorMatrixElements = { ??
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?new float[] {1.0f, ?0.0f, ?0.0f, ?0.0f, 0.0f}, ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?new float[] {0.0f, ?1.0f, ?0.0f, ?0.0f, 0.0f}, ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?new float[] {0.0f, ?0.0f, ?1.0f, ?0.0f, 0.0f}, ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?new float[] {0.0f, ?0.0f, ?0.0f, ?0.3f, 0.0f}, ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?new float[] {0.0f, ?0.0f, ?0.0f, ?0.0f, 1.0f} ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }; ?
? ? ?ColorMatrix wmColorMatrix = new ?
? ? ? ? ? ColorMatrix(colorMatrixElements); ?
? ? ?imageAttributes.SetColorMatrix(wmColorMatrix, ??
? ? ? ? ? ColorMatrixFlag.Default, ??
? ? ? ? ? ColorAdjustType.Bitmap); ?
? ? ?//隨著兩個顏色處理加入到imageAttributes 對象,我們現在就能在照片右手邊上繪制水印了。 ?
? ? ?//我們會偏離10像素到底部,10像素到左邊。 ?
? ? ?int markWidth; ?
? ? ?int markHeight; ?
? ? ?//mark比原來的圖寬 ?
? ? ?if(phWidth<=wmWidth) ?
? ? ?{ ?
? ? ? ? ? markWidth = phWidth-10; ?
? ? ? ? ? markHeight = (markWidth*wmHeight)/wmWidth; ?
? ? ?} ?
? ? ?else if(phHeight<=wmHeight) ?
? ? ?{ ?
? ? ? ? ? markHeight = phHeight-10; ?
? ? ? ? ? markWidth = (markHeight*wmWidth)/wmHeight; ?
? ? ?} ?
? ? ?else ?
? ? ?{ ?
? ? ? ? ? markWidth = wmWidth; ?
? ? ? ? ? markHeight = wmHeight; ?
? ? ?} ?
? ? ?int xPosOfWm = ((phWidth - markWidth)-10); ?
? ? ?int yPosOfWm = 10; ?
? ? ?grWatermark.DrawImage(imgWatermark, ??
? ? ? ? ? new Rectangle(xPosOfWm,yPosOfWm,markWidth, ?
? ? ? ? ? markHeight), ?
? ? ? ? ? 0, ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? 0, ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? ? ? ? wmWidth, ? ? ? ? ? ? ? ?
? ? ? ? ? wmHeight, ? ? ? ? ? ? ??
? ? ? ? ? GraphicsUnit.Pixel, ??
? ? ? ? ? imageAttributes); ?
? ? ?//最后的步驟將是使用新的Bitmap取代原來的Image。 銷毀兩個Graphic對象,然后把Image 保存到文件系統。 ?
? ? ?imgPhoto = bmWatermark; ?
? ? ?grPhoto.Dispose(); ?
? ? ?grWatermark.Dispose(); ?
? ? ?imgPhoto.Save(rDstImgPath,ImageFormat.Jpeg); ?
? ? ?imgPhoto.Dispose(); ?
? ? ?imgWatermark.Dispose(); ? ? ? ? ? ? ? ? ?
} ?
========

總結

以上是生活随笔為你收集整理的C# Image 学习总结的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

中文字幕一区二区三区四区在线视频 | 亚洲伦理一区二区 | 国产高清av免费在线观看 | 亚洲天堂在线观看完整版 | 亚洲三级视频 | 欧美成年网站 | 亚洲尺码电影av久久 | 国产精品久久麻豆 | 精品国产免费久久 | 免费a v在线 | 久久视频免费 | 欧美一级在线观看视频 | 97av在线视频 | 日韩欧美综合 | 91久久在线观看 | 日本丶国产丶欧美色综合 | 一区二区三区高清不卡 | 国产精品成人免费 | 超碰伊人网 | 97人人看 | 国产美女视频免费观看的网站 | 超碰97在线资源站 | 国产一级二级三级视频 | 一级欧美一级日韩 | 日韩最新av | 天天操天天射天天爽 | 91精品一区在线观看 | 国产视频一区在线播放 | av线上看 | 亚洲影音先锋 | 精品欧美乱码久久久久久 | 国产精品久久久久aaaa九色 | 24小时日本在线www免费的 | 婷婷 综合 色 | 国产第一福利网 | av高清免费在线 | 成人久久久电影 | 日韩欧美精品在线观看 | 五月婷婷丁香激情 | 激情欧美xxxx| 国产色拍拍拍拍在线精品 | 久久视频免费在线观看 | 国产精品一区二区三区在线播放 | 狠狠操狠狠干天天操 | 午夜性盈盈 | 91丨九色丨高潮 | 亚洲黄色小说网址 | 日本精品免费看 | 99亚洲精品在线 | 丁香激情综合 | 91av免费在线观看 | 国产成年免费视频 | 国产一二区免费视频 | 一区二区三区国产精品 | 西西444www大胆无视频 | h视频在线看 | 91亚洲精 | 国产96av| 国内精品久久久久影院优 | 夜夜操夜夜干 | 亚洲第一中文字幕 | 91看成人| 日日干狠狠操 | 免费在线看成人av | 嫩模bbw搡bbbb搡bbbb| 日韩精品一区二区三区免费视频观看 | 97免费在线视频 | 国产精品剧情 | 国产精品午夜在线 | 夜夜爽天天爽 | av激情五月 | 中文字幕成人一区 | 国产亚洲精品久久久久秋 | 久久成人在线 | 亚洲精品日韩在线观看 | www.伊人网 | 在线免费观看黄网站 | www九九热 | 午夜免费视频网站 | 亚洲激情在线播放 | 91av视频在线观看免费 | 国产91综合一区在线观看 | 色婷婷久久一区二区 | 日本一区二区三区免费观看 | 爱爱av在线| 日批视频在线观看免费 | 日本中文乱码卡一卡二新区 | 韩国精品在线观看 | 视频在线亚洲 | 国产精品久久精品国产 | 国产精品岛国久久久久久久久红粉 | 国产剧情在线一区 | 久久久久久久99精品免费观看 | 午夜精品久久久 | 最新中文字幕在线资源 | 外国av网 | 亚洲天堂网站视频 | 成年人电影免费看 | 日韩精品免费专区 | 免费www视频 | 91福利社在线观看 | 国产黄色免费 | 97超碰人 | 日本少妇视频 | 亚洲国产激情 | 国产日韩欧美在线观看 | 色黄视频免费观看 | 91香蕉视频黄 | 国产精品igao视频网入口 | 天天干夜夜爽 | 欧美日韩成人一区 | 午夜国产一区二区三区四区 | 国产99精品 | 日韩精品最新在线观看 | 97精品电影院 | 久草剧场 | 日韩网站视频 | 国产高清视频在线播放 | 欧美一区二区在线免费观看 | 一级片视频在线 | 天天爱天天射 | 免费在线观看毛片网站 | 亚洲影院一区 | 中文字幕免费久久 | 97成人精品视频在线播放 | 黄色三级在线看 | 日韩高清观看 | 日韩有码第一页 | 亚洲欧美日韩一二三区 | 久久社区视频 | 98精品国产自产在线观看 | 91资源在线播放 | 亚洲专区路线二 | 九色免费视频 | 夜夜操狠狠干 | 天天干天天想 | 国产精品美女免费 | 日韩一区二区久久 | 成人小视频在线观看免费 | 国产小视频免费在线观看 | www.色婷婷.com| 天天射综合网站 | 日韩精品久久久免费观看夜色 | 亚洲免费视频在线观看 | 国产高清免费 | 天天久久夜夜 | 日韩精品五月天 | 国产日韩欧美在线看 | 91精品啪在线观看国产 | 国产视频二 | 一区二区三区www | 欧美激情第一区 | 国产精品永久久久久久久www | 国产99久久久国产精品免费二区 | 国内久久看 | 激情久久久久久久久久久久久久久久 | 欧美激情视频在线免费观看 | 丁香六月婷婷激情 | 久久免费av电影 | 欧亚日韩精品一区二区在线 | 一本大道久久精品懂色aⅴ 五月婷社区 | 欧美精品一区二区蜜臀亚洲 | 国产精品二区在线观看 | 国产黄色精品在线观看 | 欧美日韩国产在线观看 | 免费看黄在线看 | www.久久成人 | 国产探花 | 综合黄色网 | 国产成人三级在线 | 日韩欧美高清在线观看 | 国产99久久久精品 | 欧美 日韩 国产 成人 在线 | 97超碰在线久草超碰在线观看 | 久久久久久久久久网 | 亚洲精品在线一区二区 | 在线播放av网址 | 亚洲成a人片77777kkkk1在线观看 | 国产福利免费看 | 亚洲欧洲成人 | 99视频免费 | 网址你懂的在线观看 | 国产精品黑丝在线观看 | 国产不卡在线看 | 人人爽人人爽人人爽 | 色99导航| 国产在线不卡一区 | 日韩欧美亚州 | 黄色美女免费网站 | 欧美一二三区播放 | 免费观看性生交 | 日韩欧美在线第一页 | 亚洲黑丝少妇 | 99这里都是精品 | 亚洲国产精品成人va在线观看 | 在线观看视频99 | 嫩草91影院 | 久久免费视频网站 | 亚洲天堂网视频 | 激情网五月天 | av资源免费在线观看 | 国产日产精品一区二区三区四区 | 久久精品国产第一区二区三区 | 日韩久久一区 | 五月天伊人网 | 蜜臀91丨九色丨蝌蚪老版 | 亚洲欧美日本一区二区三区 | 日韩三级免费 | 国产美女搞久久 | 亚洲波多野结衣 | 亚洲欧美日韩国产一区二区三区 | 国产亚洲综合在线 | 天天操天天干天天 | 国产最顶级的黄色片在线免费观看 | 91香蕉视频污在线 | 亚洲日本在线视频观看 | 精品久久久免费 | 国产视频资源在线观看 | 97偷拍在线视频 | 91久久国产综合精品女同国语 | 国产精品wwwwww | 日韩手机在线观看 | 免费看的黄网站软件 | 手机看片久久 | 免费成人在线观看 | 香蕉影院在线播放 | 人人添人人澡 | 国内精品视频免费 | av在线播放亚洲 | 国产亚洲欧洲 | 中文字幕在线视频第一页 | 96久久久 | 午夜久久成人 | 久久免费视频99 | 免费在线观看污网站 | 欧美一级视频免费 | 九九在线免费视频 | 亚洲精品国产高清 | 日韩和的一区二在线 | 在线观看日韩精品 | 综合色在线 | 中文字幕在线播放一区 | 天天干夜夜干 | 日韩一区二区三区高清在线观看 | 中文字幕日本电影 | 麻豆视频成人 | 国产中文字幕亚洲 | 成人黄色大片网站 | 久久久精品免费观看 | 久久久免费在线观看 | 亚洲伦理电影在线 | 久久精品99国产精品酒店日本 | 国产黄在线 | av电影 一区二区 | 中文字幕日韩有码 | 日韩电影久久 | 中文字幕亚洲国产 | 色鬼综合网 | 日韩中文字幕在线看 | 国产亚洲一区二区三区 | 五月开心六月伊人色婷婷 | 成人毛片网 | 久久免费福利视频 | 亚洲天天干 | 亚洲色影爱久久精品 | 国产福利一区二区在线 | 337p日本大胆噜噜噜噜 | 日本精品久久久久久 | 欧美a级片免费看 | 久久久精品一区二区三区 | 欧美 日韩 性 | 日韩69av| 久久福利影视 | 日本爱爱免费视频 | 久精品视频免费观看2 | 91丨九色丨国产丨porny精品 | 91精品啪| 国产精品区免费视频 | 日本成人中文字幕在线观看 | 亚洲日本欧美在线 | 天天天天天干 | 国产一级片不卡 | 中文av免费 | 久久精品亚洲一区二区三区观看模式 | 亚洲国产中文字幕 | 国产精品久久久久久av | 亚洲国产精品视频在线观看 | www免费| 视频在线观看一区 | 免费看污网站 | 欧美,日韩| 日韩视频在线不卡 | 九9热这里真品2 | 玖玖爱免费视频 | 亚洲一区日韩 | 精品久操 | 综合精品久久久 | 国产精品va在线观看入 | 日韩精品中文字幕有码 | 中文字幕日韩av | 亚洲 欧美 日韩 综合 | 又黄又爽又刺激视频 | 国产精品无av码在线观看 | 婷婷久久国产 | 日韩av电影手机在线观看 | 日韩欧美在线视频一区二区 | 国产高清不卡av | 欧美韩国在线 | 国产精品99在线播放 | 国产精品久久久久久爽爽爽 | av电影免费在线看 | 国产亚洲精品成人av久久影院 | a黄色片 | 亚洲老妇xxxxxx | 在线小视频你懂得 | 黄色在线网站噜噜噜 | 亚洲女在线 | 伊人射| 在线观看免费福利 | 天天色天天综合网 | 国产精品毛片一区视频 | 日韩videos高潮hd | 九色精品免费永久在线 | 国产精品av一区二区 | 99在线国产 | 免费在线观看91 | 999久久国精品免费观看网站 | 久久综合狠狠 | 日本女人b| 精品国产人成亚洲区 | 韩国在线一区二区 | 久久免费在线观看 | 欧美一进一出抽搐大尺度视频 | 久久国产精品偷 | 日韩精品极品视频 | 午夜色大片在线观看 | 亚洲播放一区 | 高清av不卡| 4438全国亚洲精品观看视频 | 蜜臀av性久久久久蜜臀aⅴ流畅 | 国产精品视频免费看 | 日韩一区二区三区免费视频 | av三级在线免费观看 | 久久人人爽人人片av | 国产精品丝袜在线 | www.69xx| 狠狠干.com| 91av视频在线观看免费 | 欧美日韩久久久 | 日韩在线视频免费播放 | 91精品在线免费 | 91在线公开视频 | 亚洲专区中文字幕 | 91av视屏| 亚洲精品五月天 | 成人在线你懂得 | 久久精品一区二区三区中文字幕 | 日韩有码在线观看视频 | 天天插天天色 | 国产欧美日韩视频 | 在线v| 国产一级淫片在线观看 | 久久精品亚洲 | 亚洲精品成人网 | 亚洲欧洲中文日韩久久av乱码 | 久久免费视频国产 | 国产精品日韩在线观看 | 色香蕉在线视频 | 香蕉精品视频在线观看 | 五月花婷婷 | 久久人91精品久久久久久不卡 | 99精品一区二区三区 | 视频在线观看国产 | 在线成人短视频 | 视频一区久久 | 亚洲一级二级三级 | 日本精油按摩3 | 久久免费观看少妇a级毛片 久久久久成人免费 | 91丨九色丨勾搭 | 精品影院| 中文字幕在线看视频国产 | 国产在线无 | 久艹视频在线免费观看 | 色综合激情久久 | 国产精品久久电影观看 | 欧美一级黄色视屏 | 国产999精品| 日韩电影中文字幕在线观看 | 免费看在线看www777 | 国产黄大片| 色狠狠综合天天综合综合 | 欧美精品在线观看 | 免费在线播放黄色 | 福利网在线 | 99精品视频免费看 | 97在线播放| 99精品国自产在线 | 欧美亚洲成人免费 | 久久精品视频99 | 亚洲精品激情 | 九九热视频在线播放 | 国产精品久久电影网 | 97精品免费视频 | 欧美成人按摩 | 91中文在线 | 91色影院| 一区二区三区免费在线 | 欧美一区二区在线刺激视频 | 男女视频国产 | 国产麻豆精品一区 | 91爱爱视频 | www免费 | 日韩91精品| 久久综合中文色婷婷 | 免费色网 | 99re6热在线精品视频 | 超碰人人乐 | 丁香婷婷久久久综合精品国产 | 在线观看视频在线观看 | 天堂av在线免费 | 色鬼综合网 | 国产色a在线观看 | 久久久久久免费网 | 亚洲理论在线观看电影 | 激情 亚洲 | 婷婷精品国产欧美精品亚洲人人爽 | 国产精品黄网站在线观看 | 人人狠狠综合久久亚洲婷 | 国产视频首页 | 又黄又爽又色无遮挡免费 | 欧美精品三级 | 成人a视频在线观看 | 超碰人人草 | 日日夜夜精品 | 99国产一区 | 成人在线小视频 | av蜜桃在线 | 久久久影片 | 欧美另类xxx| 国产最新在线视频 | 色吊丝在线永久观看最新版本 | 亚洲3级 | 亚洲精品视频久久 | 操操操av | 国产二级视频 | 99久久精品国产亚洲 | 91大神免费视频 | 欧美精品久久久久久久久久丰满 | 日韩av女优视频 | 国产视频资源在线观看 | 丁香六月久久综合狠狠色 | 亚洲一区免费在线 | 成人毛片在线观看视频 | 一区二区三区在线观看免费视频 | 天天舔天天搞 | 丁香六月激情婷婷 | 久久九九免费 | 成人毛片在线观看视频 | 一区二区三区电影在线播 | 中文字幕综合在线 | 天天天综合 | 国产色久| 国产精品涩涩屋www在线观看 | 亚洲国产成人精品在线观看 | 免费看黄色大全 | 51久久夜色精品国产麻豆 | 国产成人精品福利 | 天天操天天谢 | 久久短视频 | 免费观看xxxx9999片 | 色网站在线观看 | 天天干天天操天天爱 | 欧亚日韩精品一区二区在线 | 97成人精品视频在线播放 | 日韩性片| 国产日韩欧美视频在线观看 | 色999五月色 | 99视频网址 | 又大又硬又黄又爽视频在线观看 | 国产香蕉97碰碰久久人人 | 精品久久一区二区三区 | 日韩欧美国产免费播放 | 一区二区精品在线观看 | 韩国一区二区在线观看 | 欧洲视频一区 | 91桃色免费视频 | 中文字幕在线看视频 | 色资源在线观看 | 欧美伦理一区 | 日韩视频1区 | 五月婷影院 | 成人avav| 国产精品午夜在线 | 在线免费试看 | 8x成人免费视频 | 蜜桃视频色 | 国产精品99久久久久久人免费 | 天天操狠狠操 | 在线观看视频一区二区三区 | 亚洲国产精品第一区二区 | 日本免费一二三区 | 91麻豆精品国产91久久久久 | 在线观看av片| 日韩在线观看你懂的 | 欧美日韩在线视频一区 | 99久视频 | 色欧美视频 | 91在线视频在线观看 | 日韩一区二区三区在线看 | 欧美粗又大 | 天天色欧美 | 精品国精品自拍自在线 | 综合激情网... | 在线观看网站黄 | 精品欧美乱码久久久久久 | 九九九视频在线 | 91免费国产在线观看 | 日韩精品久久久免费观看夜色 | 天天看天天干天天操 | 97在线超碰| 久久影视网| 亚洲电影第一页av | 国产精品乱码一区二三区 | 日韩av在线看 | 四虎国产| 91精品国产自产在线观看永久 | 操操操av | 久久久久国产精品视频 | 国产午夜精品一区 | 欧美日韩a视频 | 久久激情婷婷 | 国产精品久久久久一区二区国产 | 久久精品视频日本 | 五月婷婷综合色拍 | 丁香五月缴情综合网 | 91香蕉视频在线下载 | 久久精品—区二区三区 | 国产一区二区三区在线 | 五月综合在线观看 | 欧美国产日韩一区二区三区 | 亚洲午夜精品久久久 | 久久五月婷婷丁香社区 | 精品在线观看一区二区 | 精品国产乱码 | 国产偷国产偷亚洲清高 | 亚洲天堂在线观看完整版 | 日韩v在线91成人自拍 | 亚洲永久国产精品 | 国产精品麻豆欧美日韩ww | 九色免费视频 | 狠狠的操你 | 日韩免费在线观看 | 最近免费中文视频 | 亚洲五月 | 色偷偷888欧美精品久久久 | 色七七亚洲影院 | 婷婷www| 夜夜躁天天躁很躁波 | 黄色影院在线免费观看 | 国产精品孕妇 | 国产色一区| 亚洲精品视频在线观看免费 | 在线性视频日韩欧美 | 91在线视频免费观看 | 日本激情中文字幕 | 美女国内精品自产拍在线播放 | 国产成人av| 狠狠色噜噜狠狠狠狠 | 97成人在线视频 | 国产日韩精品一区二区三区在线 | 经典三级一区 | 色网站在线 | 天天综合网国产 | 黄色小视频在线观看免费 | www黄色软件 | 日韩激情小视频 | 国产成人精品av久久 | 蜜臀久久99精品久久久酒店新书 | 成人av电影免费在线观看 | 五月亚洲综合 | 激情视频在线观看网址 | 亚洲视频网站在线观看 | 欧美狠狠操 | 中文字幕91在线 | 99精品欧美一区二区三区黑人哦 | 久久久久久久久久久久久国产精品 | 91大神一区二区三区 | 狠狠操天天射 | 国产精品观看在线亚洲人成网 | 亚洲综合导航 | 国产亚洲精品久 | 成人久久| 69精品在线观看 | 永久精品视频 | 国产片免费在线观看视频 | 香蕉视频啪啪 | 成人av在线直播 | 日韩亚洲国产精品 | 国产精品日韩久久久久 | 丁香花中文在线免费观看 | 91在线视频免费观看 | 在线观看视频你懂 | 美女视频黄的免费的 | 在线观看免费 | 久久精品精品电影网 | 国产精品视频资源 | 人人狠狠综合久久亚洲婷 | 久草在线高清视频 | 一级免费观看 | 国产精品永久在线 | 99在线国产 | 亚洲精品影视在线观看 | 操老逼免费视频 | 最近中文字幕免费 | 丁香免费视频 | 日韩精品最新在线观看 | 一级成人免费 | 成人免费看黄 | 亚洲国产丝袜在线观看 | 五月婷婷在线播放 | 欧美日韩一区二区在线 | 日韩在线观看你懂得 | 日韩欧美电影在线 | 欧美在线视频第一页 | 国产成人精品一区二区三区在线观看 | 美女一区网站 | 中文字幕亚洲在线观看 | 久久精品国产精品亚洲 | 九九九热精品免费视频观看网站 | 91免费的视频在线播放 | 91视频 - x99av | 91人人澡人人爽人人精品 | 欧美精品视| 国产中文视 | 亚洲精品在线观看av | 精品国产色 | 久久久久久久久电影 | 欧美日韩激情网 | 99精品视频免费观看 | 午夜123| 国内精品免费久久影院 | 中文字幕免费 | 最新色站| 精品字幕| 国产亚洲字幕 | 日本不卡123区 | 日韩在线观看影院 | 欧美成人xxxxx| 91亚洲夫妻 | 骄小bbw搡bbbb揉bbbb | 精品一区二区三区在线播放 | 免费看的视频 | 亚洲成人二区 | 天天操夜夜摸 | 国产亚洲永久域名 | 美女网站在线观看 | 亚洲无线视频 | 国产精品激情在线观看 | www.综合网.com | 免费看的av片 | 精品一区二区免费在线观看 | 国产精品久久久久久久久久直播 | 成人黄色免费在线观看 | 97成人在线观看视频 | 狠狠干狠狠插 | 黄色影院在线免费观看 | 国产精品免费麻豆入口 | 午夜精品中文字幕 | 日韩欧美在线高清 | 欧美人zozo| 97超碰资源总站 | 亚洲,播放 | 高清不卡免费视频 | 麻豆精品视频在线 | 免费能看的av | 国产手机视频在线 | 国产剧情一区在线 | 黄色www在线观看 | 亚洲精品一区二区在线观看 | 国产午夜视频在线观看 | 国外成人在线视频网站 | 狠狠插天天干 | 久久激情视频网 | 久久精品站 | 91热爆在线观看 | 91看片麻豆 | 美女黄视频免费 | 一级性生活片 | 天堂资源在线观看视频 | 国产精品6999成人免费视频 | 国产一区二区三区午夜 | 91人人爽久久涩噜噜噜 | 久黄色 | 国产一区二区三区 在线 | 久久久久亚洲天堂 | 99情趣网视频 | 岛国精品一区二区 | 四虎影视成人永久免费观看视频 | 国产精品久久久久久久毛片 | 99免费在线视频 | 国产免费一区二区三区最新 | 天天艹天天干天天 | 99久久精品免费看国产一区二区三区 | 欧美日韩国产一区二区三区 | 久久夜视频 | 精品毛片在线 | 国产999视频在线观看 | 91精品一区二区三区久久久久久 | 天天操天天操天天操 | 91日韩在线专区 | 婷婷丁香六月 | 狠狠综合| 六月久久婷婷 | 97在线影视 | 97成人啪啪网 | 性色视频在线 | 亚洲四虎 | 香蕉视频免费看 | 国产成人精品电影久久久 | 在线免费观看视频你懂的 | 91免费观看网站 | 日韩一区二区久久 | 最新中文字幕在线观看视频 | 久久综合婷婷国产二区高清 | 久久国产色 | 国产又粗又猛又色又黄视频 | 国产一线二线三线性视频 | 在线观看小视频 | 天天干.com | 国产精品都在这里 | 久草精品视频在线观看 | 久久免费电影网 | 人人爽人人插 | 成年人黄色av | 狠狠狠狠狠狠狠干 | 91色欧美 | 国产一区播放 | 六月丁香在线观看 | 中文在线天堂资源 | 中文字幕资源在线 | 国产韩国日本高清视频 | 狠狠狠狠狠狠狠狠干 | 久久精品久久久久久久 | 国产成a人亚洲精v品在线观看 | 国产视频日韩 | 亚洲一区免费在线 | 丁香六月五月婷婷 | 欧美日韩综合在线观看 | 美女一区网站 | 99免在线观看免费视频高清 | www.97色.com| 日韩精品影视 | 超碰在线人人 | av资源在线看 | 久久久久国产精品午夜一区 | 日韩一区二区三区高清免费看看 | 高清久久久久久 | 色天天久久 | 国产成人在线观看免费 | 欧美一二三区在线观看 | 国产在线视频一区 | www.超碰 | 美女网站在线观看 | 天天干天天做天天爱 | 黄色片亚洲| 国产日产亚洲精华av | 久草.com| 国产精品网站 | www.色婷婷 | 久久久毛片| 91探花视频 | 91精品国产一区二区在线观看 | 精品在线一区二区三区 | 欧美一级片在线免费观看 | 欧美另类v| 天天干 夜夜操 | 久久免费美女视频 | se婷婷| 午夜精品视频免费在线观看 | 成人小视频在线观看免费 | 成人av电影在线播放 | 国产视频久久久久 | 在线99热 | 特级毛片网 | 极品嫩模被强到高潮呻吟91 | 伊人影院av | 人人超碰97| 黄色影院在线免费观看 | 国产亚洲精品久久19p | 五月开心色 | 国产精品久久久久久麻豆一区 | av电影免费观看 | 国产一区二区在线观看视频 | 中文字幕人成人 | 久久久免费毛片 | 亚洲精品456在线播放乱码 | 国产精品色在线 | 成人黄色片免费看 | 91亚洲精品国产 | 国产黄免费在线观看 | 激情五月婷婷激情 | 亚洲永久免费av | 国产精品自产拍在线观看 | 碰碰影院 | 97免费视频在线播放 | 亚洲乱码中文字幕综合 | 婷婷色网视频在线播放 | 视频国产在线观看18 | 国产人成在线观看 | 久久亚洲精品电影 | 日本韩国精品一区二区在线观看 | 国产h在线播放 | 亚洲视频1 | 在线观看视频国产 | 日韩欧美黄色网址 | 久久草av| 国产精品久久久久久久午夜片 | 亚洲国产丝袜在线观看 | 激情久久一区二区三区 | 亚洲人人网 | 97精品超碰一区二区三区 | 一级精品视频在线观看宜春院 | 日韩高清在线一区二区 | 黄色软件网站在线观看 | 久久视频一区二区 | 国产一区二区在线免费播放 | 美女网站在线观看 | 夜夜视频欧洲 | 国产馆在线播放 | 日韩专区av | 国产伦理精品一区二区 | 日韩欧美高清 | 日日夜夜综合网 | 久久久av免费 | 中文字幕在线有码 | 成人国产在线 | 中文字幕在线免费 | 日韩有色 | 成人三级网址 | 日本丶国产丶欧美色综合 | 看av免费网站 | 一级片色播影院 | 国产剧在线观看片 | 中文字幕在线视频一区二区 | 久久国产成人午夜av影院潦草 | 综合网伊人 | 91精品视频一区 | 开心激情久久 | av在线免费不卡 | h视频在线看 | 国产精品九九热 | 国产成人免费观看 | 97超碰在线免费观看 | 精品国产精品久久 | 久草.com| 国产免费激情久久 | 日韩剧| 99热高清| 免费亚洲成人 | 久久精久久精 | 亚洲精品久久久久久中文传媒 | 亚洲永久国产精品 | 免费黄色网址大全 | 顶级欧美色妇4khd | 日日夜夜天天干 | 免费视频一区二区 | 一区二区欧美在线观看 | 成人免费观看电影 | 夜夜爽88888免费视频4848 | 国产精品一码二码三码在线 | 伊人成人激情 | 久久精品黄| 国产精品国产三级国产aⅴ9色 | 中文字幕在线观看你懂的 | 免费高清av在线看 | 日韩一区二区三区免费视频 | 九九色网 | 欧美日韩网址 | 久草视频在线观 | 国产成人av一区二区三区在线观看 | 日韩视频一区二区在线 | 黄色av高清 | 久久久国际精品 | 手机成人av| 免费看一级黄色大全 | 五月婷婷亚洲 | 精品久久久久久综合 | 97香蕉久久超级碰碰高清版 | 91少妇精拍在线播放 | 综合色中文 | 亚洲精品美女久久久久 | 99久久婷婷国产一区二区三区 | 在线看一区 | 四月婷婷在线观看 | 欧美一区日韩精品 | 久久人人精品 | 欧美精品久久久久久久久久白贞 | 天天干,夜夜爽 | 久久另类小说 | 久久免费视屏 | 狠狠躁夜夜av | 中文字幕免费高清在线观看 | 狠狠色噜噜狠狠狠 | 一区二区三区观看 | 黄色片免费电影 | 91新人在线观看 | 亚洲成av人片在线观看 | 日韩在线观看你懂的 | 欧美a在线免费观看 | 久久99精品国产一区二区三区 | 免费特级黄毛片 | 国产亚洲精品免费 | 亚洲精品在线看 | 国产在线a视频 | 国产精品久久久久永久免费 | 91完整版在线观看 | 久久99国产精品久久99 | 狠狠操狠狠干2017 | 我要看黄色一级片 | 久久久亚洲麻豆日韩精品一区三区 | 欧美大片大全 | 韩国av一区二区 | 中文字幕色播 | 91精品在线免费视频 | 日韩视频一区二区 | 免费欧美 | 99视频在线免费播放 | 91久久国产自产拍夜夜嗨 | 一区二区三区在线视频观看58 | 久久久久亚洲精品男人的天堂 | 国产在线欧美在线 | 四川bbb搡bbb爽爽视频 | 天天插天天操天天干 | 在线有码中文字幕 | 免费视频成人 | 亚洲精品www久久久 www国产精品com | 成年人在线观看视频免费 | 五月婷丁香网 | 69国产精品成人在线播放 | 久久国产精品99久久久久久老狼 | 久久精品国产亚洲精品 | 国产一区二区手机在线观看 | 日韩av一区二区三区四区 | 玖玖爱国产在线 | 亚洲1区 在线 | 91最新网址| www黄色 | 欧美乱码精品一区二区 | 国产剧情在线一区 | 精品免费久久久久久 | 日本中文一区二区 | 日本精品视频在线观看 | 亚洲国产大片 | 亚洲午夜久久久久久久久久久 | 在线黄色毛片 | 日日夜夜人人精品 | 婷婷丁香国产 | 欧美一级久久 | 天天天天天天天操 | 亚洲国产资源 | 日韩免费成人 | 免费黄a | 亚洲影院天堂 | 亚洲毛片视频 | 亚洲v欧美v国产v在线观看 | 91视频在线网址 | 九九热精| 精品福利国产 | 日韩精品一区二区三区不卡 | 激情欧美一区二区三区 | 久久av高清 | av网站在线免费观看 | 久久一区二区三区国产精品 | 在线视频中文字幕一区 | 婷婷久久久 | 久久免费的精品国产v∧ | 91三级视频| 不卡日韩av | 天天干,天天射,天天操,天天摸 | 国产色女人 | 国产成人精品日本亚洲999 | 欧美色婷婷| 国产精品国产三级国产aⅴ无密码 | 国产在线永久 | 91久久国产自产拍夜夜嗨 | 69国产盗摄一区二区三区五区 | 亚洲精品456在线播放 | 亚洲五月六月 | 久久综合精品一区 | 久久久久99精品国产片 | 手机在线日韩视频 | 中文字幕丝袜制服 | 大片网站久久 | 日韩特级黄色片 | 五月天激情在线 | 国内精品久久天天躁人人爽 | 久久久久久久久爱 | 99久久999久久久精玫瑰 |