2009-05-01 5 views
1

입력 이미지를 가져 와서 마스크를 생성 할 수있는 페이지를 작성하려고합니다. 입력은 투명 배경이있는 색인 된 PNG입니다. 원본 이미지가 불투명 한 곳이면 원래 이미지가 투명하고 투명한 곳에 결과 이미지가 검은 색이됩니다.ASP.net의 이미지 반전 반전

저는 asp.net에서 몇 가지 매우 기본적인 이미지 조작을했는데 진행 방법이 확실하지 않습니다. 나는 픽셀 단위로 진행하는 것보다 더 빠른 해결책이 있기를 바라고있다.

누구든지 올바른 방향으로 나를 가리킬 수 있다면 정말 고마워 할 것입니다.

답변

0

나는 변환을 사용하여 작업 솔루션을 가지고있다. 완벽하게 솔직히 말하면 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>