亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

以 Tiff 格式保存圖片而不壓縮

以 Tiff 格式保存圖片而不壓縮

C#
繁花如伊 2022-12-31 13:09:19
我剛剛發現 TIFF 有多種格式。由于某種原因,使用時Using bm As New Bitmap(rect.Width, rect.Width)bm.Save("C:\testfolder\screenshot.png", Imaging.ImageFormat.Tiff)格式變為 LZW 壓縮格式,我不能在第三方庫中使用它。經過一些搜索,我發現.NET 確實提供了一個庫來保存為具有不同壓縮選項的 TIFF,我想嘗試所有這些但我不知道如何實現它?;蛘呶覒撜f我不知道如何使用它:https://learn.microsoft.com/en-us/dotnet/api/system.windows.media.imaging.tiffcompressoption?view=netframework-4.8#examples目的是我想獲取區域截圖并將其保存為 TIFF。Dim stream As New FileStream("new.tif", FileMode.Create)Dim encoder As New TiffBitmapEncoder()encoder.Compression = TiffCompressOption.Zipencoder.Frames.Add(BitmapFrame.Create(image))   <--what is this "image"?encoder.Save(stream)那個image實體是什么?流?如何將捕獲的屏幕截圖區域另存為 TIFF?如果Using bm As New Bitmap(rect.Width, rect.Width) 我不介意先保存它,然后再重新讀取 bmp 流。唯一的問題是我不知道示例中給出的“圖像”代表什么。我從這里閱讀了一些信息,但我仍然沒有弄明白: https ://learn.microsoft.com/en-us/dotnet/api/system.windows.media.imaging.bitmapframe.create?view=netframework- 4.8如果你弄明白了,請給我一個如何使用代碼的例子。
查看完整描述

1 回答

?
紫衣仙女

TA貢獻1839條經驗 獲得超15個贊

您可以使用舊的 System.Drawing 方式而不是 System.Windows.Media 方式。

僅從Encoder.Compression Field的文檔中略微改編:

Imports System.Drawing.Imaging

'' .....


Private Shared Function GetEncoderInfo(ByVal mimeType As String) As ImageCodecInfo

    Dim j As Integer

    Dim encoders() As ImageCodecInfo

    encoders = ImageCodecInfo.GetImageEncoders()


    j = 0

    While j < encoders.Length

        If encoders(j).MimeType = mimeType Then

            Return encoders(j)

        End If

        j += 1

    End While

    Return Nothing


End Function


Sub SaveAsTiff()

    Dim sampleFile = "C:\temp\ToTiff.png"


    Using bmp = Image.FromFile(sampleFile)

        Dim myImageCodecInfo = GetEncoderInfo("image/tiff")


        Dim myEncoder As Imaging.Encoder = Imaging.Encoder.Compression

        Dim myEncoderParameters = New EncoderParameters(1)

        Dim myEncoderParameter = New EncoderParameter(myEncoder, EncoderValue.CompressionNone)

        myEncoderParameters.Param(0) = myEncoderParameter


        bmp.Save("C:\temp\ToTiff.tif", myImageCodecInfo, myEncoderParameters)


    End Using


End Sub

但是,它不允許 ZIP 壓縮。但這對您來說可能無關緊要:哪種 TIFF 圖像壓縮更好,LZW 還是 ZIP?

此外,對于屏幕截圖,您可能需要考慮使用 PNG 格式,尤其是當圖像將在網絡上使用時。


查看完整回答
反對 回復 2022-12-31
  • 1 回答
  • 0 關注
  • 269 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號