2012-06-13 4 views
2

사용자가 웹 카메라에서 스냅 샷을 찍을 수 있도록 JQuery 플러그인 (ScriptCam)을 사용하고 있습니다.저장 방법 Asp : 클라이언트 측에서 생성 된 이미지 요소

<asp:Button ID="btnTakeSnapshot" runat="server" Text="Take SS" OnClientClick="base64_toimage(); return false;" /> 

JS 코드 :

사용자가 클릭 한 후
function base64_toimage() { 
    document.getElementById('<%= imgBinary.ClientID %>').src = "data:image/png;base64," + $.scriptcam.getFrameAsBase64(); 
    document.getElementById('<%= txtImgBinary.ClientID %>').value = $.scriptcam.getFrameAsBase64(); 
}; 

, 스냅 샷이 Asp:Image 요소에 결합되어 또한

<asp:Image ID="imgBinary" runat="server" Width="160" Height="120" /> 

그리고

여기 JS 코드 내 버튼의 이것에 이진 코드를 쓰십시오. Asp:TextBox :

사용자가 스냅 샷을하고 "저장"버튼을 마지막으로 클릭 한 후 다음
<asp:TextBox ID="txtImgBinary" TextMode="MultiLine" runat="server"></asp:TextBox> 

가, 내가하고 싶었던 것은, 내가 SQL 서버 내 image columntxtImgBinary.Text 값의 이진 코드를 저장한다. 나도 그랬어. 다 잘됐다.

하지만 다른 페이지의 데이터베이스에서 이진 값을 바인드 한 후에도 작동하지 않았습니다. 여기에 내가했던 방법은 다음과 같습니다

imgUserPhoto.Attributes.Add("src", "data:image/png;base64," + binaryCodeFromDB); 

또한 WinformsPictureBox 요소에 동일한 바이너리 코드를 사용하려고하지만 난 Argument Exception: Parameter is not valid 오류가 있음을 얻었다.

나는 어제부터 이것을하려고 노력해 왔습니다.

그래서 이진 데이터를 저장하는 방법에 문제가있을 수 있습니다. 텍스트 상자를 빈 유리로 사용하고 있기 때문에 이진 코드가 바뀌면서 텍스트 상자로 복사하고 나중에 복사 할 수도 있습니다.

또한이 방법으로 저장 한 이미지는 다른 작업 구성 요소의 이미지 바이너리 데이터와 다른 이진 데이터를 가지고 있습니다.

그래서 src 속성을 JS와 바인딩 한 후이 이미지를 서버에 저장하는 방법이 있습니까? 이 이미지를 저장할 수 있으면 temp.jpg 이미지를 사용하고 나중에 이진 코드를 생성합니다.

미리 감사드립니다.

답변

1

잘못된 방식으로 코드를 저장할 가능성에 대해서는 오해하지 않았습니다.

일반적으로 텍스트 상자에 base64 배열을 복제하고 텍스트 상자의 값을 내 이미지 열로 복사했습니다.

은 내가 byte64 배열이 byte[] 배열과 같은 하지 실감하지 않았다 유감입니다.

byte[] bytes = Convert.FromBase64String(txtImgBinary.Text); 

가 그럼 난 내 데이터베이스에서이 bytes 배열을 저장 :이 값을 저장하기 전에

그래서, 나는이 작은 대화를했다. 이제 제대로 작동합니다.

(요소 Asp:Image 용)

Image1.Attributes.Add("src", "data:image/png;base64," + Convert.ToBase64String(bytesValueFromDB)); 

(요소 Winforms PictureBox 용)

MemoryStream stream = new MemoryStream(bytesValueFromDB); 
System.Drawing.Image tempImage = System.Drawing.Image.FromStream(stream); 
string FName = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location) + @"\tempImage.jpg"; 
tempImage.Save(FName); 
imageFileName = FName; 
ctlPictureBox.ImageLocation = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location) + @"\tempImage.jpg"; 
: 관심있는 사람들을 위해


, 여기에 나중에이 값을 사용하는 방법
관련 문제