2020年3月23日 星期一

.Net VB 圖片上傳後變橫的

爬了下文應該是因為exif資訊的問題,上傳前必須先判斷是否需要轉角度...找了一下總算找到相關內容參考

Public Function TestRotate(sImageFilePath As String) As Boolean
    Dim rft As RotateFlipType = RotateFlipType.RotateNoneFlipNone
    Dim img As Bitmap = Image.FromFile(sImageFilePath)
    Dim properties As PropertyItem() = img.PropertyItems
    Dim bReturn As Boolean = False
    For Each p As PropertyItem In properties
      If p.Id = 274 Then
        Dim orientation As Short = BitConverter.ToInt16(p.Value, 0)
        Select Case orientation
          Case 1
            rft = RotateFlipType.RotateNoneFlipNone
          Case 3
            rft = RotateFlipType.Rotate180FlipNone
          Case 6
           rft = RotateFlipType.Rotate90FlipNone
          Case 8
           rft = RotateFlipType.Rotate270FlipNone
        End Select
      End If
    Next
    If rft <> RotateFlipType.RotateNoneFlipNone Then
      img.RotateFlip(rft)
      System.IO.File.Delete(sImageFilePath)
      img.Save(sImageFilePath, System.Drawing.Imaging.ImageFormat.Jpeg)
      bReturn = True
    End If
    Return bReturn

  End Function

需要import
System.Drawing
System.Drawing.Imaging

RotateFlipType還有很多種,但手機似乎只會遇到以上狀況所以就只用到1、3、6、8

感謝幫助到我的原文,那邊也有C#的寫法

原文網址點我

2020年3月5日 星期四

Null / DBNull / String.Empty的差異

找.net判斷null的東西時看到不錯的文章,但該文章已經失效只好自己紀錄一下...

以下是文章的紀錄:

Null跟DBNull及String.Empty這三者,或許很少有人認真的去想過這三者的差異在那,而什麼時候要用那一個去判斷?

從簡單的if去比對這三者是否相等,很快的就發現這三者是不相等的.

null != DBNull  /DBNull != string.Empty / null != string.Empty

那麼現在宣告了兩個變數,一個是string a="",另一個是string b=null; 那麼這兩個變數是各自符合那一種?

結果是

a != null;

a != DBNull

a = string.Empty

拿.Net 2.0才有的新判斷string.IsNullOrEmpty來看.也是為true

而b的部份則如下

b = null

b != dbnull

b != string.Empty

string.IsNullOrEmpty(b) = true

從這兩個例子看到什麼時候是Null,什麼時候是string.Empty,那麼DBNull呢?

DBNull的使用時機,當至資料庫查詢,符合的資料回傳的資料欄位沒有值,為null時,此時此欄位的值就=DBNull.

當至資料庫查詢,沒有符合的資料回傳時,此時回傳的結果就=Null.



Null是當物件未被初始化時的情況,例如 StreamReader reader;還沒有給new StreamReader();

ex :
object o=cmd.ExecuteScalar();(回傳一個欄位的值)
狀況1:當DB回傳有符合的資料,但該欄位沒有值時.o = DBNull 可是 o != null
狀況2:當DB回傳沒有符合的資料時, o = null可是o != DBNull
狀況3:不論是狀況1或狀況2的結果,Convert.ToString(o)=string.Empty;


感謝原作者的文章,雖然連結已失效還是貼下
https://www.dotblogs.com.tw/jeff-yeh/archive/2008/12/07/6286.aspx