すべての色のコードを帰属させ、それらを読み取ることができる方法はありますか?プログラム的に私は意味します。私の目標は、画像をコードに変換してから、画像に戻すことです。
質問する
116 次
2 に答える
0
各色には4つのフィールドがあります(一部の画像では、意味のある情報を持つ3つのフィールドしかありません)
これらのフィールドは次のとおりです。
- アルファ(
A
)(これはピクセルの不透明度を表します) - 赤(
R
)(赤の強度) - 緑(
G
)(緑の強度) - 青(
B
)(青の強度)
あなたがすることは、それらを読み、値を互いに連結することによってそれぞれのコード文字列を生成することです。
これは、コンパイルされるかどうかを確認しなかったため、おそらく擬似コードと見なすことができますが、これに沿って何かを行う必要があります。
Dim pixelColor As Color
Dim image As BitMap = New BitMap("your_image.png")
Dim a As String
Dim r As String
Dim b As String
Dim g As String
Dim fileString As New StringBuilder()
fileString.AppendLine(image.Size.Width.ToString())
fileString.AppendLine(image.Size.Height.ToString())
' Loop over all pixels
For y As Integer = 0 To image.Size.Height - 1
For x As Integer = 0 To image.Size.Width - 1
pixelColor = image.GetPixel(x, y)
' get ARGB values as strings
a = pixelColor.A.ToString()
r = pixelColor.R.ToString()
g = pixelColor.G.ToString()
b = pixelColor.B.ToString()
' Append the colors, one pixel per line
fileString.AppendLine(a & " " & r & " " & g & " " & b)
Next
Next
Using file As New StreamWriter("image_data.txt")
outfile.Write(fileString.ToString())
End Using
繰り返しますが、これはおそらくコンパイルされません。(現時点ではコンパイラを持っていません)
編集: 幅と高さも保存する必要があることに気づきました。
ファイルの読み取りについて:
Dim file As System.IO.StreamReader
file = File.OpenText("text_file.txt")
Dim width As Integer = Convert.ToInt32(file.ReadLine)
Dim height As Integer = Convert.ToInt32(file.ReadLine)
Dim image As BitMap = New BitMap(width, height)
Dim currentX As Integer = 0
Dim currentY As Integer = 0
Do Until file.EndOfStream
Dim line As String = file.ReadLine
Dim valueArray(4) As String = line.Split(" ")
Dim a As Integer = Convert.ToInt16(valueArray(0))
Dim r As Integer = Convert.ToInt16(valueArray(1))
Dim g As Integer = Convert.ToInt16(valueArray(2))
Dim b As Integer = Convert.ToInt16(valueArray(3))
image.SetPixel(currentX, currentY, Color.FromArgb(a, r, g, b))
currentX = currentX + 1
If currentX == width Then
currentX = 0
currentY = currentY + 1
If currentY == height Then
Exit Do ' We're done here.
End If
End If
Loop
' At this point, you'll have a BitMap with all the pixels set.
繰り返しますが、この擬似コードを検討してください。
于 2013-03-23T09:09:15.643 に答える
0
各色は実際にはARGBカラーコードであり、整数値を取得するだけです
Dim myColor As Color = Color.Red
Dim Code As Integer = myColor.ToArgb()
Dim myColorBack As Color = Color.FromArgb(Code)
于 2013-03-23T09:16:53.270 に答える