مرجع تخصصی برنامه نویسان

انجمن تخصصی برنامه نویسان فارسی زبان

کاربر سایت

میثاق

عضویت از 1393/01/14

مشکل با عکس گرفتن با وب کم

  • یکشنبه 23 آبان 1395
  • 14:28
تشکر میکنم

سلام خدمت دوستان عزیز

تو یکی از پست های این سایت آموزش کار با وب کم در asp.net آموزش داده شده است.

وقتی ما پروژه رو دانلود می کنیم بصورت تکی خیلی راحت برنامه کار می کنه ولیکن وقتی خودمون توی پروژمون یه سایت صفحه درست می کنیم و دقیقا تمام کارها رو انجام می دیم و حتی دقیقا فایلهای دانلود شده پست آموزش رو کپی می کنیم تو پروژمون برنامه کار نمیکنه.یعنی پخش زنده از وب کم رو داریم ولی وقتی روی گزینه گرفتن عکس کلیک می کنیم عکسی گرفته نمی شود.

البته وقتی برنامه رو trcae می کنیم در خط  if (Request.InputStream.Length > 0)  شرط داخل پرانتز اجرا نمی شود!!!

دوستان راهنمایی کنن ممنون می شم ...

پاسخ های این پرسش

تعداد پاسخ ها : 7 پاسخ
کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • یکشنبه 23 آبان 1395
  • 17:13

کدتون رو به همراه متن خطا قرار دهید

کاربر سایت

میثاق

عضویت از 1393/01/14

  • دوشنبه 24 آبان 1395
  • 15:47


using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.IO;
using System.Web.Services;

public partial class cs2 : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!this.IsPostBack)
        {
            if (Request.InputStream.Length > 0)
            {
                using (StreamReader reader = new StreamReader(Request.InputStream))
                {
                    string hexString = Server.UrlEncode(reader.ReadToEnd());
                    string imageName = DateTime.Now.ToString("dd-MM-yy hh-mm-ss");
                    string imagePath = string.Format("~/Captures/{0}.png", imageName);
                    File.WriteAllBytes(Server.MapPath(imagePath), ConvertHexToBytes(hexString));
                    Session["CapturedImage"] = ResolveUrl(imagePath);
                }
            }
        }
    }

    private static byte[] ConvertHexToBytes(string hex)
    {
        byte[] bytes = new byte[hex.Length / 2];
        for (int i = 0; i < hex.Length; i += 2)
        {
            bytes[i / 2] = Convert.ToByte(hex.Substring(i, 2), 16);
        }
        return bytes;
    }

    [WebMethod(EnableSession = true)]
    public static string GetCapturedImage()
    {
        string url = HttpContext.Current.Session["CapturedImage"].ToString();
        HttpContext.Current.Session["CapturedImage"] = null;
        return url;
    }

}
<!--
  For more information on how to configure your ASP.NET application, please visit
  http://go.microsoft.com/fwlink/?LinkId=169433
  -->
<configuration>
 <configSections>
  <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
  <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false"/>
 </configSections>
 <connectionStrings>
  <add name="VesalConString" connectionString="Data Source=.;Initial Catalog=Vesal;Integrated Security=True" providerName="System.Data.SqlClient"/>
  <add name="VesalConnectionString" connectionString="Data Source=.;Initial Catalog=Vesal;Integrated Security=True;Charset=utf8" providerName="System.Data.SqlClient"/>
 </connectionStrings>
 <system.web>
    <httpRuntime targetFramework="4.5" requestLengthDiskThreshold ="1024"/>
  <compilation debug="true" targetFramework="4.5">
   <assemblies>
    <add assembly="System.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
    <add assembly="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
    <add assembly="System.Management, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
    <add assembly="PresentationCore, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
    <add assembly="System.Speech, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
    <add assembly="System.Web.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
    <add assembly="System.Data.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
    <add assembly="Stimulsoft.Report.Web, Version=2012.2.1304.0, Culture=neutral, PublicKeyToken=EBE6666CBA19647A"/>
    <add assembly="Stimulsoft.Report, Version=2012.2.1304.0, Culture=neutral, PublicKeyToken=EBE6666CBA19647A"/>
    <add assembly="Stimulsoft.Base, Version=2012.2.1304.0, Culture=neutral, PublicKeyToken=EBE6666CBA19647A"/>
    <add assembly="Stimulsoft.Report.WebDesign, Version=2012.2.1304.0, Culture=neutral, PublicKeyToken=EBE6666CBA19647A"/></assemblies>
  </compilation>
  
  <pages>
   <namespaces>
    <add namespace="System.Web.Optimization"/>
   </namespaces>
   <controls>
    <add assembly="Microsoft.AspNet.Web.Optimization.WebForms" namespace="Microsoft.AspNet.Web.Optimization.WebForms" tagPrefix="webopt"/>
   </controls>
  </pages>
  <membership>
   <providers>
    <!--
        ASP.NET Membership is disabled in this template. Please visit the following link http://go.microsoft.com/fwlink/?LinkId=301889 to learn about the ASP.NET Membership support in this template
        -->
    <clear/>
   </providers>
  </membership>
  <profile>
   <providers>
    <!--
        ASP.NET Membership Profile is disabled in this template. Please visit the following link http://go.microsoft.com/fwlink/?LinkId=301889 to learn about the ASP.NET Membership support in this template
        -->
    <clear/>
   </providers>
  </profile>
  <roleManager>
   <!--
          ASP.NET Membership Role is disabled in this template. Please visit the following link http://go.microsoft.com/fwlink/?LinkId=301889 to learn about the ASP.NET Membership support in this template
        -->
   <providers>
    <clear/>
   </providers>
  </roleManager>
  <!--
            If you are deploying to a cloud environment that has multiple web server instances,
            you should change session state mode from "InProc" to "Custom". In addition,
            change the connection string named "DefaultConnection" to connect to an instance
            of SQL Server (including SQL Azure and SQL  Compact) instead of to SQL Server Express.
      -->
  <sessionState mode="InProc" customProvider="DefaultSessionProvider">
   <providers>
    <add name="DefaultSessionProvider" type="System.Web.Providers.DefaultSessionStateProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection"/>
   </providers>
  </sessionState>
  <httpHandlers>
   <add path="Telerik.Web.UI.WebResource.axd" type="Telerik.Web.UI.WebResource" verb="*" validate="false"/>
  </httpHandlers>
  <httpModules>
  </httpModules>
 </system.web>
 <runtime>
  <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
   <dependentAssembly>
    <assemblyIdentity name="WebGrease" culture="neutral" publicKeyToken="31bf3856ad364e35"/>
    <bindingRedirect oldVersion="0.0.0.0-1.5.2.14234" newVersion="1.5.2.14234"/>
   </dependentAssembly>
  </assemblyBinding>
 </runtime>
 <entityFramework>
  <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
   <parameters>
    <parameter value="v11.0"/>
   </parameters>
  </defaultConnectionFactory>
  <providers>
   <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer"/>
  </providers>
 </entityFramework>
 <system.webServer>
  <validation validateIntegratedModeConfiguration="false"/>
  <handlers>
   <add name="Telerik_Web_UI_WebResource_axd" verb="*" preCondition="integratedMode" path="Telerik.Web.UI.WebResource.axd" type="Telerik.Web.UI.WebResource"/>
  </handlers>
  <modules>
  </modules>
 </system.webServer>
</configuration>

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="cs2.aspx.cs" Inherits="cs2" %>
<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script src='<%=ResolveUrl("~/Webcam_Plugin/jquery.webcam.js") %>' type="text/javascript"></script>
<script type="text/javascript">
    var pageUrl = '<%=ResolveUrl("~/Default.aspx") %>';
    $(function () {
        jQuery("#webcam").webcam({
            width: 320,
            height: 240,
            mode: "save",
            swffile: '<%=ResolveUrl("~/Webcam_Plugin/jscam.swf") %>',
        debug: function (type, status) {
            $('#camStatus').append(type + ": " + status + '<br /><br />');
        },
        onSave: function (data) {
            $.ajax({
                type: "POST",
                url: pageUrl + "/GetCapturedImage",
                data: '',
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function (r) {
                    $("[id*=imgCapture]").css("visibility", "visible");
                    $("[id*=imgCapture]").attr("src", r.d);
                },
                failure: function (response) {
                    alert(response.d);
                }
            });
        },
        onCapture: function () {
            webcam.save(pageUrl);
        }
    });
});
function Capture() {
    webcam.capture();
    return false;
}
</script>

    <form id="form1" runat="server">
    <table border="0" cellpadding="0" cellspacing="0">
    <tr>
        <td align="center">
            <u>نمایش زنده</u>
        </td>
        <td>
        </td>
        <td align="center">
            <u>تصویر</u>
        </td>
    </tr>
    <tr>
        <td>
            <div id="webcam">
            </div>
        </td>
        <td>
            &nbsp;
        </td>
        <td>
            <asp:Image ID="imgCapture" runat="server" Style="visibility: hidden; width: 320px;
                height: 240px" />
        </td>
    </tr>
</table>
<br />
<asp:Button ID="btnCapture" Text="عکس انداختن" runat="server" OnClientClick="return Capture();" />
<br />
<span id="camStatus"></span>

    </form>
</body>
</html>

HTML

C#

web.config

فایل های ضمیمه

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • دوشنبه 24 آبان 1395
  • 16:16

متن خطا و فقط اون تیکه از کد که خطا داره رو بزاید

کاربر سایت

میثاق

عضویت از 1393/01/14

  • دوشنبه 24 آبان 1395
  • 17:24

مهندس  برنامه خطا نمیده ولی صحیح عمل نمی کنه.تصویر رو از وب کم داریم به صورت پخش زنده. اما وقتی روی دکمه گرفتن عکس کلیک می کنم نه در پوشه عکسی قرار داده می شه و نه عکس گرفته شده کنار عکس پخش زنده گذاشته می شه.

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • دوشنبه 24 آبان 1395
  • 17:32

متاسفانه اینجوری نمیشه کمک کرد

نه خطایی داره

نه متنی نشون میده

باید tarce کنید کد رو تا متوجه خطای کد بشید

کاربر سایت

میثاق

عضویت از 1393/01/14

  • سه شنبه 25 آبان 1395
  • 09:24

مهندس نمی دونم چرا با وجود اینکه دوربین در حال نشون دادن تصویر به صورت زنده هست ولی موقع گرفتن عکس در خط ( if (Request.InputStream.Length > 0)) که باید بزرگتر از صفر باشد مساوی صفر می شود. آیا باز دلیل مشخص نمی شود؟!

با شتکر

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • سه شنبه 25 آبان 1395
  • 10:05

این یعنی تصویر به سرور ارسال نمیشه

کاربرانی که از این پست تشکر کرده اند

هیچ کاربری تا کنون از این پست تشکر نکرده است

اگر نیاز به یک مشاور در زمینه طراحی سایت ، برنامه نویسی و بازاریابی الکترونیکی دارید

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)