ソース掲示板




すべてから検索

キーワード   条件 表示 現行ログ 過去ログ トピックス 名前 本文

  メンテナンス 前画面に戻る

対象スレッド 件名: VB.net : クリップボード内の画像データを base64 に変換してクリップボードにセットし直す
名前: lightbox
処理選択
パスワード

件名 VB.net : クリップボード内の画像データを base64 に変換してクリップボードにセットし直す
名前 lightbox
コメント
先頭に "data:image/png;base64," を付け足して、<img src="付け足した文字列" /> で画像表示が可能です

@DIV
Imports System.Drawing
Imports System.Windows.Forms
Imports System.IO

Module Module1

	Sub Main()

		Dim img_work As Image = Nothing

		' 一時ファイルのパス
		Dim tmp_file As String = System.IO.Path.GetTempFileName()

		' クリップボードにビットマップ形式のデータがあるかどうか
		if Clipboard.ContainsImage() Then
			' イメージを取得
			img_work = Clipboard.GetImage()
			if img_work IsNot Nothing Then
				' PNG データとして保存する
				img_work.Save(tmp_file, System.Drawing.Imaging.ImageFormat.Png )

				' ファイルの情報を取得
				Dim fi As New FileInfo(tmp_file)
				' 読み込みの為のストリームを取得
				Dim fs As FileStream = fi.OpenRead()
				' ファイルサイズより、必要なバイト配列サイズを取得
				Dim nBytes As Integer = fi.Length
				' バイト配列の作成
				Dim ByteArray(nBytes) As Byte
				' 読み込み
				Dim nBytesRead As Integer = fs.Read(ByteArray, 0, nBytes)
				fs.Close()
				fs.Dispose()

				'Base64文字列に変換
				Dim base64String As String
				base64String = System.Convert.ToBase64String(ByteArray)

				' 一時ファイルを削除
				File.Delete(tmp_file)

				' クリップボードにコピー
				Clipboard.SetText(base64String)
				' 目的の処理終了
				Console.WriteLine("画像を png 形式で base64 に変換してクリップボードにコピーしました")

			end if
		end if

		' 処理終了

		' 一時停止
		Console.Write("Enterキーを押して下さい : ")
		Console.ReadLine()

	End Sub

End Module
@END