【C#公共幫助類】 Image幫助類

大家知道,開發項目除了數據訪問層很重要外,就是Common了,這里就提供了強大且實用的工具。

?

【C#公共幫助類】 Convert幫助類

?

Image類:

using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Drawing.Imaging;
using System.Drawing;
using System.Web;
namespace Common
{public  static class Image{#region 圖片格式轉換/// <summary>/// 圖片格式轉換/// </summary>/// <param name="OriFilename">原始文件相對路徑</param>/// <param name="DesiredFilename">生成目標文件相對路徑</param>/// <returns></returns>///  JPG采用的是有損壓縮所以JPG圖像有可能會降低圖像清晰度,而像素是不會降低的   ///  GIF采用的是無損壓縮所以GIF圖像是不會降低原圖圖像清晰度和像素的,但是GIF格式只支持256色圖像。public static bool ConvertImage(string OriFilename, string DesiredFilename){string extname = DesiredFilename.Substring(DesiredFilename.LastIndexOf('.')+1).ToLower();ImageFormat DesiredFormat;//根據擴張名,指定ImageFormatswitch (extname){case "bmp":DesiredFormat = ImageFormat.Bmp;break;case "gif":DesiredFormat = ImageFormat.Gif;break;case "jpeg":DesiredFormat = ImageFormat.Jpeg;break;case "ico":DesiredFormat = ImageFormat.Icon;break;case "png":DesiredFormat = ImageFormat.Png;break;default:DesiredFormat = ImageFormat.Jpeg;break;}try{System.Drawing.Image imgFile = System.Drawing.Image.FromFile(WebPathTran(OriFilename));imgFile.Save(WebPathTran(DesiredFilename), DesiredFormat);return true;}catch {return false;}}#endregion#region 圖片縮放/// <summary>/// 圖片固定大小縮放/// </summary>/// <param name="OriFileName">源文件相對地址</param>/// <param name="DesiredFilename">目標文件相對地址</param>/// <param name="IntWidth">目標文件寬</param>/// <param name="IntHeight">目標文件高</param>/// <param name="imageFormat">圖片文件格式</param>public static bool ChangeImageSize(string OriFileName, string DesiredFilename, int IntWidth, int IntHeight, ImageFormat imageFormat){string SourceFileNameStr =WebPathTran(OriFileName); //來源圖片名稱路徑string TransferFileNameStr = WebPathTran(DesiredFilename); //目的圖片名稱路徑FileStream myOutput =null;try{System.Drawing.Image.GetThumbnailImageAbort myAbort = new System.Drawing.Image.GetThumbnailImageAbort(imageAbort);Image SourceImage = System.Drawing.Image.FromFile(OriFileName);//來源圖片定義Image TargetImage = SourceImage.GetThumbnailImage(IntWidth, IntHeight, myAbort, IntPtr.Zero);  //目的圖片定義//將TargetFileNameStr的圖片放寬為IntWidth,高為IntHeight myOutput = new FileStream(TransferFileNameStr, FileMode.Create, FileAccess.Write, FileShare.Write);TargetImage.Save(myOutput, imageFormat);myOutput.Close();return true;}catch {myOutput.Close();return false;}}private static  bool imageAbort(){return false;}#endregion#region 文字水印/// <summary>/// 文字水印/// </summary>/// <param name="wtext">水印文字</param>/// <param name="source">原圖片物理文件名</param>/// <param name="target">生成圖片物理文件名</param>public static bool ImageWaterText(string wtext,string source, string target){bool resFlag = false;Image image = Image.FromFile(source);Graphics graphics = Graphics.FromImage(image);try{graphics.DrawImage(image, 0, 0, image.Width, image.Height);Font font = new System.Drawing.Font("Verdana", 60);Brush brush = new System.Drawing.SolidBrush(System.Drawing.Color.Green);graphics.DrawString(wtext, font, brush, 35, 35);image.Save(target);resFlag = true;}catch (Exception){throw;}finally {graphics.Dispose();image.Dispose();}return resFlag;}#endregion#region 圖片水印/// <summary>/// 在圖片上生成圖片水印/// </summary>/// <param name="Path">原服務器圖片路徑</param>/// <param name="Path_syp">生成的帶圖片水印的圖片路徑</param>/// <param name="Path_sypf">水印圖片路徑</param>public static bool ImageWaterPic(string source, string target, string waterPicSource){bool resFlag = false;Image sourceimage = Image.FromFile(source);Graphics sourcegraphics = Graphics.FromImage(sourceimage);Image waterPicSourceImage = Image.FromFile(waterPicSource);try{sourcegraphics.DrawImage(waterPicSourceImage, new System.Drawing.Rectangle(sourceimage.Width - waterPicSourceImage.Width, sourceimage.Height - waterPicSourceImage.Height, waterPicSourceImage.Width, waterPicSourceImage.Height), 0, 0, waterPicSourceImage.Width, waterPicSourceImage.Height, GraphicsUnit.Pixel);sourceimage.Save(target);}catch (Exception){throw;}finally{sourcegraphics.Dispose();sourceimage.Dispose();waterPicSourceImage.Dispose();}return resFlag;}#endregion/// <summary>/// 路徑轉換(轉換成絕對路徑)/// </summary>/// <param name="path"></param>/// <returns></returns>private static string WebPathTran(string path){try{return HttpContext.Current.Server.MapPath(path);}catch{return path;}}}
}

?

轉載于:https://www.cnblogs.com/eadily-dream/p/5525899.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/374630.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/374630.shtml
英文地址,請注明出處:http://en.pswp.cn/news/374630.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Java泛型快速教程

泛型是Java SE 5.0引入的一種Java功能&#xff0c;在其發布幾年后&#xff0c;我發誓那里的每個Java程序員不僅聽說過它&#xff0c;而且已經使用過它。 關于Java泛型&#xff0c;有很多免費和商業資源&#xff0c;而我使用的最佳資源是&#xff1a; Java教程 Java泛型和集合…

876. 鏈表的中間結點

給定一個頭結點為 head 的非空單鏈表&#xff0c;返回鏈表的中間結點。 如果有兩個中間結點&#xff0c;則返回第二個中間結點 代碼一&#xff1a; 自己想的一個方法 class Solution {public ListNode middleNode(ListNode head) {ListNode p1 head;ListNode p2 head;//i,j…

Hive查詢Join

Select a.val,b.val From a [Left|Right|Full Outer] Join b On (a.keyb.key); 現有兩張表&#xff1a;sales 列出了人名及其所購商品的 ID&#xff1b;things 列出商品的 ID 和名稱&#xff1a; hive> select * from sales; OK Joe 2 Hank 4 Ali 0 Eve 3 Ha…

jquery 獲取easyui combobox選中的值

$(#comboboxlist).combobox(getValue);轉載于:https://www.cnblogs.com/ftm-datablogs/p/5526857.html

調度Java應用程序中的主體

許多項目需要計劃功能&#xff0c;例如我們計劃的工作&#xff0c;重復的工作&#xff0c;異步執行等。 我們的首選方法是使用企業工作調度程序&#xff0c;例如OpenSymphony的Quartz。 使用計劃任務進行編碼時&#xff0c;最棘手的部分之一是執行部分。 這里的主要經驗法則是…

繼承映射關系 joinedsubclass的查詢

會出現下面這樣的錯一般是配置文件中的mapping和映射文件中的package路徑或者class中的name路徑不一致 org.hibernate.MappingException: Unknown entity: com.zh.hibernate.joinedsubclass.Student at org.hibernate.internal.SessionFactoryImpl.getEntityPersister(Sessi…

Spark系列—02 Spark程序牛刀小試

一、執行第一個Spark程序 1、執行程序 我們執行一下Spark自帶的一個例子&#xff0c;利用蒙特卡羅算法求PI&#xff1a; 啟動Spark集群后&#xff0c;可以在集群的任何一臺機器上執行一下命令&#xff1a; /home/spark/spark-1.6.1-bin-hadoop2.6/bin/spark-submit \ --class o…

JVM選項:-client vs -server

您是否曾經在運行Java應用程序時想知道-client或-server開關是什么&#xff1f; 例如&#xff1a; javaw.exe -client com.blogspot.sdoulger.LoopTest也顯示在java.exe的“幫助”中&#xff0c;例如&#xff0c;其中的選項包括&#xff1a; -client選擇“客戶端” VM -serv…

網頁前臺小知識

1.左右布局div塊自適應&#xff0c;首先外邊套一個div,把寬度固定一個px&#xff0c;然后margin設為&#xff10; atuo&#xff1b;這樣他會根據窗口大小自動變換左右距離&#xff0e;就這么簡單&#xff1c;/p> 2.多個標簽共用一個樣式&#xff0c;用&#xff0c;分隔開 p…

統計字符串每個字符出現的次數

//str是個只包含小寫字母的字符串&#xff0c;以下是統計每個字符出現的頻數 int[] cnt new int[26];//toCharArray() for (char ch : str.toCharArray()) {cnt[ch - a]; }//charAt() for(int i 0;i<str.length;i){char ch str.charAt(i);cnt[ch - a]; }

在Java 7中處理文件

以下是The Well-Grounded Java Developer的草稿的修改后的片段。 它使您快速了解與以前版本相比&#xff0c;在Java 7中操作文件要容易得多。 通過使用新的Files類及其許多實用程序方法&#xff0c;您可以僅用一行代碼就可以對文件執行以下操作&#xff1a; 創建 刪除 復制 …

3.1存儲管理操作系統

存儲器管理的對象是主存&#xff08;內存&#xff09;。其主要功能包含分配和回收主存空間、提高主存的利用率、擴充主存、對主存信息實現有效保護。存儲器的結構為&#xff1a;寄存去、緩存、主存、外存。邏輯地址&#xff08;對用戶角度。程序存放的位置&#xff09;、物理地…

學習教材《構建之法》遇到的問題及思路

在學習中每個人都會遇到各種各樣的問題&#xff0c;下面就是我遇到的問題及可能解決問題的思路。 1.如何寫好程序的注釋&#xff0c;每個人都會寫注釋&#xff0c;但是&#xff0c;需要注釋什么&#xff1f; 思路&#xff1a;注釋是為了解釋程序做什么&#xff0c;為什么要這樣…

了解和擴展Java ClassLoader

Java ClassLoader是項目開發中Java的關鍵但很少使用的組件之一。 就我個人而言&#xff0c;我從未在任何項目中擴展ClassLoader&#xff0c;但是擁有自己的可以自定義Java類加載的ClassLoader的想法讓我感到很興奮。 本文將概述Java類加載&#xff0c;然后繼續創建自定義ClassL…

CAD教程-AL對其命令

AL可以實現不規則的對其功能 1.第一步按下AL&#xff0c;按下Enter 2.選擇第一個源點 3.選擇第一個目標點 4.選擇第二個源點 5.選擇第二個目標點 6.按下Enter&#xff0c;完成移位 轉載于:https://www.cnblogs.com/weloveshare/p/4739873.html

使用Spring將POJO公開為JMX MBean

這是一個非常不錯的教程&#xff0c;介紹了如何通過我們最新的JCG合作伙伴 “ The Holy Java ”博客&#xff08;很酷的名字&#xff09;實現“ 用Spring輕松將POJO作為JMX MBean公開 ”。 &#xff08;注意&#xff1a;對原始帖子進行了少量編輯以提高可讀性&#xff09; Jav…

mysql 5.1由于Host為localhost的用戶為空,密碼為空,導致本地用戶無法登陸。

不說了。直接上mysql的用戶數據&#xff0c;第四列里面&#xff0c;host為localhost&#xff0c;用戶為空&#xff0c;密碼為空。 導致在本地登陸的時候除了root的賬戶外&#xff0c;其他賬號不需要密碼即可登陸&#xff0c;并且影響host為 %的用戶登陸。 這里只需要刪除對應的…

scala 88 for替換map,flatmap,filtermap,for,scala,flatmap

王家林親授《DT大數據夢工廠》大數據實戰視頻“Scala深入淺出實戰經典”視頻、音頻和PPT下載&#xff01;第88講&#xff1a;Scala中使用For表達式實現map、flatMap、filter百度云盤&#xff1a;http://pan.baidu.com/s/1mgtgcIG360云盤&#xff1a;http://yunpan.cn/cdXsbctXf…

簡單闡述下OC中UIImage三種創建方式~~~

一. 直接使用imageNamed進行創建 1 UIImage * image [UIImage imageNamed:"1.jpg"]; 簡單說一下這種方式的優缺點&#xff1a; 優點&#xff1a;代碼量少&#xff0c;一行代碼就可以搞定。當程序中多次加載這張圖片時&#xff0c;系統會指向同一塊內存&#xff0c;…

(一二四)tableView的多組數據展示和手動排序

最近在寫一個輕量級的網絡游戲&#xff0c;遇到了技能優先順序手動排序的需求&#xff0c;我就想到了iOS自帶的tableView編輯功能&#xff0c;對其進行了初步探索&#xff0c;最后做出的效果如下圖所示&#xff1a; 點擊左邊可以刪除&#xff0c;拖住右邊可以手動排序&#xff…