C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[1]: asp.netで画像描画


(過去ログ 137 を表示中)

[トピック内 16 記事 (1 - 16 表示)]  << 0 >>

■80535 / inTopicNo.1)  asp.netで画像描画
  
□投稿者/ kunikata (6回)-(2016/07/26(Tue) 16:30:18)

分類:[ASP.NET (VB)] 

 前回は、サーバーに画像を保存して、イメージコントロールに表示する方法は、成功しましたが、絶対パスに保存して、イメージコントロールに表示する方法にチャレンジしました。visual studio 2015では、イメージコントロールに表示されましたが、本番ではイメージコントロールは表示されましたが、
画像は表示されません。ばつ印の所を右クリックすると、イメージコントロールの幅と高さがゼロになっていました。imageurlはあっていました。。

 コードは次のとうり。

  Imports System.Drawing
  Public Class _Default
Inherits System.Web.UI.Page
Dim img As New Bitmap(500, 500)
Dim g As Graphics = Graphics.FromImage(img)
Const XMAX = 399, YMAX = 399
Const HABA = 60, MITUDO = 25, RITTAIDO = 2
Dim TAKASA(0 To XMAX), DOT(0 To XMAX) As String
Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load


OBJECTBYOGA()
For Y = 0 To YMAX
' Erase DOT
For i = 0 To XMAX
DOT(i) = ""
Next

TAKASALOAD(Y)
For X = 0 To XMAX
Dim TAKASA1 As Integer = TAKASA(X) * RITTAIDO
If DOT(X) = "" Then
If Rnd() * 100 < MITUDO Then
DOT(X) = "7"
Else
DOT(X) = "0"
End If
End If
img.SetPixel(X, Y, System.Drawing.ColorTranslator.FromOle(QBColor(Val(DOT(X)))))
Dim TUGI As Integer = X + HABA - (TAKASA1 * RITTAIDO)
If TUGI >= 0 And TUGI <= XMAX Then
DOT(TUGI) = DOT(X)
End If
Next
Next



' Response.ContentType = "image/png"
' Response.Flush()
' img.Save(Response.OutputStream, Imaging.ImageFormat.Png)
' img.Save("c:\inetpub\wwwroot\images\pyramid.png", Imaging.ImageFormat.Png)
' Response.End()
img.Save("c:\pyramid\image\pyramid2.png", Imaging.ImageFormat.Png)


End Sub

Private Function QBCN(ByVal IRO As String) As Integer

If IRO = "FF000000" Then
QBCN = 0
ElseIf IRO = "ff000080" Then
QBCN = 1
ElseIf IRO = "ff008000" Then
QBCN = 2
ElseIf IRO = "ff008080" Then
QBCN = 3
ElseIf IRO = "ff800000" Then
QBCN = 4
ElseIf IRO = "ff800080" Then
QBCN = 5
ElseIf IRO = "ff808000" Then
QBCN = 6
ElseIf IRO = "ffc0c0c0" Then
QBCN = 7
ElseIf IRO = "ff808080" Then
QBCN = 8
ElseIf IRO = "ff0000ff" Then
QBCN = 9
ElseIf IRO = "ff00ff00" Then
QBCN = 10
ElseIf IRO = "ff00ffff" Then
QBCN = 11
ElseIf IRO = "ffff0000" Then
QBCN = 12
ElseIf IRO = "ffff00ff" Then
QBCN = 13
ElseIf IRO = "ffffff00" Then
QBCN = 14
ElseIf IRO = "ffffffff" Then
QBCN = 15
End If
Return QBCN


End Function



Sub TAKASALOAD(ByVal Y)
For X = 0 To XMAX
Dim col1 As New Color
col1 = img.GetPixel(X, Y)
TAKASA(X) = QBCN(col1.Name)
Next
End Sub
Private Sub OBJECTBYOGA()
Dim col1 As New Color
Dim i As Integer
Dim j As Integer = 1
For i = 1 To 7
col1 = System.Drawing.ColorTranslator.FromOle(QBColor(i))
Dim b As New Drawing2D.LinearGradientBrush(New Point(0 + 25 * (i - j), 0 + 25 * (i - j)), New Point(400 - 25 * (i - j), 400 - 25 * (i - j)), col1, col1)
g.FillRectangle(b, 0 + 25 * (i - j), 0 + 25 * (i - j), 400 - 50 * (i - j), 400 - 50 * (i - j))
Next
End Sub



End Class

 ソースは

  <%@ Page Title="Home Page" Language="VB" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="Default.aspx.vb" Inherits="PyramidWebpro2._Default" %>

<asp:Content ID="BodyContent" ContentPlaceHolderID="MainContent" runat="server">

<div class="jumbotron">
++<asp:Image ID="Image1" runat="server" Height="650px"
ImageUrl="c:\pyramid\image\pyramid2.png" Width="700px" />
</div>

</asp:Content>

   本番で、画像が表示されないのは何故かしりたいのです。

   どなたか、教えてください。


  

引用返信 編集キー/
■80538 / inTopicNo.2)  http://
□投稿者/ PANG2 (126回)-(2016/07/26(Tue) 18:35:44)
2016/07/26(Tue) 18:39:17 編集(投稿者)

スレッドきりかよ、いいかげんしろ!
引用返信 編集キー/
■80539 / inTopicNo.3)  Re[2]: http://
□投稿者/ 鈴木 (2回)-(2016/07/26(Tue) 22:53:51)
No80538 (PANG2 さん) に返信
なんで激昂してるの?
引用返信 編集キー/
■80540 / inTopicNo.4)  Re[3]: http://
□投稿者/ バーバル (1回)-(2016/07/26(Tue) 23:21:14)
彼は日本語があまり得意ではないようなので、その点は勘弁してあげて。

ただ、ヤケドしそうな質問にはスルーに限る。
引用返信 編集キー/
■80541 / inTopicNo.5)  Re[3]: http://
□投稿者/ Azulean (666回)-(2016/07/26(Tue) 23:24:07)
No80376 でいっこうに話を聞いてもらえなかったからでしょうね。

こういうのも難ですが、ASP.NET で C:\ から始まるパスを書いて、それをベースに改良すれば本番で動くと考えてしまう時点で基本的なところを理解できていないことになります。
サーバーとクライアントは別なのですから、クライアントがサーバーの C:\ で始まるパスにアクセスできるはずがありません。
よって、サーバーの見える場所に置いてその URL を動的に出力するか、aspx で仲介するかという話になりますが、 No80376 でその話を聞いてもらえていない以上は、打つ手なしとなるわけです。

思い込まず、何を言われているか、真摯に聞いてみてください。
(前のスレッドに戻って解決を目指してください)
引用返信 編集キー/
■80542 / inTopicNo.6)  Re[4]: http://
□投稿者/ 鈴木 (3回)-(2016/07/26(Tue) 23:40:13)
話聞いてもらえないと激昂するの?
子供みたい
打つ手なしとかそんな糞な説教かましたら
ますますお話聞いてもらえないんじゃない?

引用返信 編集キー/
■80543 / inTopicNo.7)  Re[4]: http://
□投稿者/ 鈴木 (4回)-(2016/07/26(Tue) 23:49:38)
No80541 (Azulean さん) に返信
俺の話聞いてるのか?
お前に言ってるんだぞ
いいかげんにしろ!
引用返信 編集キー/
■80544 / inTopicNo.8)  Re[4]: http://
□投稿者/ 鈴木 (5回)-(2016/07/27(Wed) 00:23:45)
鈴木さんの話聞けない以上は打つ手なしとなるわけです
とまあこう続くわけで

受け手の立場になってみると不快でしょ?
一方的な話の展開はやめるべきかと
わんくまはmsdnのようなゴミフォーラム
とは違うんだから
引用返信 編集キー/
■80545 / inTopicNo.9)  Re[5]: http://
□投稿者/ 774RR (434回)-(2016/07/27(Wed) 06:15:33)
だったら鈴木さんが責任もって教えてやってくださいよ
ちゃちゃ入れるだけぢゃなくってさ
オイラはパス

引用返信 編集キー/
■80546 / inTopicNo.10)  Re[5]: http://
□投稿者/ Azulean (667回)-(2016/07/27(Wed) 06:18:22)
2016/07/27(Wed) 06:22:12 編集(投稿者)

一度だけレスしておきます。

そう思うのであれば、ぜひ、質問者か読み手に役立つコメントを書いてください。
誰かの言動を戒めるだけであれば、質問者や読み手の立場から見て役に立たないということ(=あなたが批判する対象と同じこと)になるでしょうから。
引用返信 編集キー/
■80547 / inTopicNo.11)  Re[6]: http://
□投稿者/ 鈴木 (6回)-(2016/07/27(Wed) 06:22:45)
No80545 (774RR さん) に返信
なんの責任かわかんないけどパスするだけなら黙ってれば
引用返信 編集キー/
■80548 / inTopicNo.12)  Re[6]: http://
□投稿者/ 鈴木 (7回)-(2016/07/27(Wed) 06:27:05)
No80546 (Azulean さん) に返信
あなたが真摯に受け止めればスレの円滑な進行に
役立つと思うけど
まるで他人事のような言い草ですな
引用返信 編集キー/
■80549 / inTopicNo.13)  Re[7]: http://
□投稿者/ 鈴木 (8回)-(2016/07/27(Wed) 07:31:32)
「真摯にご対応頂いた」のように相手を高める
のならいいが「真摯にこうしてくれ」と要求
するのは「誠意を見せろ」に近い

俺は常連のベテランなんだと
偉ぶりたい気持ちもあるだろうが
ただのチンピラなんで
そういう言葉遣いも改めるべき
引用返信 編集キー/
■80550 / inTopicNo.14)  Re[8]: http://
□投稿者/ 鈴木 (9回)-(2016/07/27(Wed) 08:58:16)
俺わんくまモデレータに立候補しようかな
偉ぶりたいならmsdnゴミフォーラムで
と呼びかけて参りたい
どうする?投票する?
引用返信 編集キー/
■80556 / inTopicNo.15)  Re[4]: http://
□投稿者/ kunikata (7回)-(2016/07/27(Wed) 14:02:36)
No80541 (Azulean さん) に返信
> No80376 でいっこうに話を聞いてもらえなかったからでしょうね。
>
> こういうのも難ですが、ASP.NET で C:\ から始まるパスを書いて、それをベースに改良すれば本番で動くと考えてしまう時点で基本的なところを理解できていないことになります。
> サーバーとクライアントは別なのですから、クライアントがサーバーの C:\ で始まるパスにアクセスできるはずがありません。
> よって、サーバーの見える場所に置いてその URL を動的に出力するか、aspx で仲介するかという話になりますが、 No80376 でその話を聞いてもらえていない以上は、打つ手なしとなるわけです。
>
> 思い込まず、何を言われているか、真摯に聞いてみてください。
> (前 のスレッドに戻って解決を目指してください)

  kunikataの返事
  検索すると、アイディアが浮かび、解決できました。

解決済み
引用返信 編集キー/
■80557 / inTopicNo.16)  Re[1]: asp.netで画像描画
□投稿者/ kunikata (8回)-(2016/07/27(Wed) 14:05:37)
No80535 (kunikata さん) に返信
>  前回は、サーバーに画像を保存して、イメージコントロールに表示する方法は、成功しましたが、絶対パスに保存して、イメージコントロールに表示する方法にチャレンジしました。visual studio 2015では、イメージコントロールに表示されましたが、本番ではイメージコントロールは表示されましたが、
> 画像は表示されません。ばつ印の所を右クリックすると、イメージコントロールの幅と高さがゼロになっていました。imageurlはあっていました。。
>
>  コードは次のとうり。
>
>   Imports System.Drawing
>   Public Class _Default
> Inherits System.Web.UI.Page
> Dim img As New Bitmap(500, 500)
> Dim g As Graphics = Graphics.FromImage(img)
> Const XMAX = 399, YMAX = 399
> Const HABA = 60, MITUDO = 25, RITTAIDO = 2
> Dim TAKASA(0 To XMAX), DOT(0 To XMAX) As String
> Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load




>
>
> OBJECTBYOGA()
> For Y = 0 To YMAX
> ' Erase DOT
> For i = 0 To XMAX
> DOT(i) = ""
> Next
>
> TAKASALOAD(Y)
> For X = 0 To XMAX
> Dim TAKASA1 As Integer = TAKASA(X) * RITTAIDO
> If DOT(X) = "" Then
> If Rnd() * 100 < MITUDO Then
> DOT(X) = "7"
> Else
> DOT(X) = "0"
> End If
> End If
> img.SetPixel(X, Y, System.Drawing.ColorTranslator.FromOle(QBColor(Val(DOT(X)))))
> Dim TUGI As Integer = X + HABA - (TAKASA1 * RITTAIDO)
> If TUGI >= 0 And TUGI <= XMAX Then
> DOT(TUGI) = DOT(X)
> End If
> Next
> Next
>
>
>
> ' Response.ContentType = "image/png"
> ' Response.Flush()
> ' img.Save(Response.OutputStream, Imaging.ImageFormat.Png)
> ' img.Save("c:\inetpub\wwwroot\images\pyramid.png", Imaging.ImageFormat.Png)
> ' Response.End()
> img.Save("c:\pyramid\image\pyramid2.png", Imaging.ImageFormat.Png)
>
>
> End Sub
>
> Private Function QBCN(ByVal IRO As String) As Integer
>
> If IRO = "FF000000" Then
> QBCN = 0
> ElseIf IRO = "ff000080" Then
> QBCN = 1
> ElseIf IRO = "ff008000" Then
> QBCN = 2
> ElseIf IRO = "ff008080" Then
> QBCN = 3
> ElseIf IRO = "ff800000" Then
> QBCN = 4
> ElseIf IRO = "ff800080" Then
> QBCN = 5
> ElseIf IRO = "ff808000" Then
> QBCN = 6
> ElseIf IRO = "ffc0c0c0" Then
> QBCN = 7
> ElseIf IRO = "ff808080" Then
> QBCN = 8
> ElseIf IRO = "ff0000ff" Then
> QBCN = 9
> ElseIf IRO = "ff00ff00" Then
> QBCN = 10
> ElseIf IRO = "ff00ffff" Then
> QBCN = 11
> ElseIf IRO = "ffff0000" Then
> QBCN = 12
> ElseIf IRO = "ffff00ff" Then
> QBCN = 13
> ElseIf IRO = "ffffff00" Then
> QBCN = 14
> ElseIf IRO = "ffffffff" Then
> QBCN = 15
> End If
> Return QBCN
>
>
> End Function
>
>
>
> Sub TAKASALOAD(ByVal Y)
> For X = 0 To XMAX
> Dim col1 As New Color
> col1 = img.GetPixel(X, Y)
> TAKASA(X) = QBCN(col1.Name)
> Next
> End Sub
> Private Sub OBJECTBYOGA()
> Dim col1 As New Color
> Dim i As Integer
> Dim j As Integer = 1
> For i = 1 To 7
> col1 = System.Drawing.ColorTranslator.FromOle(QBColor(i))
> Dim b As New Drawing2D.LinearGradientBrush(New Point(0 + 25 * (i - j), 0 + 25 * (i - j)), New Point(400 - 25 * (i - j), 400 - 25 * (i - j)), col1, col1)
> g.FillRectangle(b, 0 + 25 * (i - j), 0 + 25 * (i - j), 400 - 50 * (i - j), 400 - 50 * (i - j))
> Next
> End Sub
>
>
>
> End Class
>
>  ソースは
>
>   <%@ Page Title="Home Page" Language="VB" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="Default.aspx.vb" Inherits="PyramidWebpro2._Default" %>
>
> <asp:Content ID="BodyContent" ContentPlaceHolderID="MainContent" runat="server">
>
> <div class="jumbotron">
> ++<asp:Image ID="Image1" runat="server" Height="650px"
> ImageUrl="c:\pyramid\image\pyramid2.png" Width="700px" />
> </div>
>
> </asp:Content>
>
>    本番で、画像が表示されないのは何故かしりたいのです。
>
>    どなたか、教えてください。
>
>  解決できました。お騒がせして、申し訳ありません。
>   
>
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -