[OK]を私は、変換を使用して実用的なソリューションを持っています。正直言って私はカラーマトリックスで何をやっているのか100%理解していないので、これをやったやり方は最適ではないかもしれません。他の誰かが同じ問題を抱えている場合は、以下のコードを貼り付けてください。
基本的に、トランスフォーメーションによって透明ピクセルが黒くなり、色付きピクセルが白くなります。私はその後、白いピクセルにMakeTransparentを使用しました。これを一歩一歩進める方法があるはずですが、残念ながら今日は私を超えています
ありがとうもう一度chris-私は何時間も働いていたテクニックを探していましたが、変換のタイプ。
<%@ page language="vb" contenttype="image/png" %>
<%@ Import Namespace="System.IO" %>
<%@ import namespace="system.drawing" %>
<%@ import namespace="system.drawing.imaging" %>
<%@ import namespace="system.drawing.drawing2d" %>
<script runat="server">
Sub Page_Load()
Dim tmpImage As Bitmap = Bitmap.FromFile(Server.MapPath("test.png"))
Dim input As Bitmap = New Bitmap(tmpImage.Width, tmpImage.Height, PixelFormat.Format32bppArgb)
Dim trans As New ColorMatrix(New Single()() _
{New Single() {0, 1, 1, 1, 0}, _
New Single() {1, 0, 1, 1, 0}, _
New Single() {1, 1, 0, 1, 0}, _
New Single() {1, 1, 1, 1, 0}, _
New Single() {0, 0, 0,255, 1}})
Dim attr As New ImageAttributes
Dim rc As New Rectangle(0, 0, input.Width, input.Height)
Dim out As New memorystream
Dim g As Graphics = Graphics.FromImage(input)
g.Clear(Color.Transparent)
attr.SetColorMatrix(trans, System.Drawing.Imaging.ColorMatrixFlag.Default, System.Drawing.Imaging.ColorAdjustType.Bitmap)
g.DrawImage(tmpImage, rc, 0, 0, input.Width, input.Height, GraphicsUnit.Pixel, attr)
input.makeTransparent(System.Drawing.Color.White)
input.Save(out, ImageFormat.Png)
g.Dispose()
input.Dispose()
tmpImage.Dispose()
out.WriteTo(Response.OutputStream)
End Sub
</script>
本当にありがとうございました。私が必要とした正しい方向へのプッシュでした。私は今、私が以下に投稿する予定の解決策を持っています。 –