2009-06-26 5 views
0

これは私が、私は、ユーザーが写真をアップロードして、私がクリックしたときに今アップロード時にイメージのサイズを変更できません - 私のバッファは何ですか?

Public Sub ResizeFromStream(ByVal ImageSavePath As String, ByVal MaxSideSize As Integer, ByVal Buffer As System.IO.Stream) 

    Dim intNewWidth As Integer 
    Dim intNewHeight As Integer 
    Dim imgInput As System.Drawing.Image = System.Drawing.Image.FromStream(Buffer) 


    'Determine image format 
    Dim fmtImageFormat As ImageFormat = imgInput.RawFormat 

    'get image original width and height 
    Dim intOldWidth As Integer = imgInput.Width 
    Dim intOldHeight As Integer = imgInput.Height 

    'determine if landscape or portrait 
    Dim intMaxSide As Integer 

    If (intOldWidth >= intOldHeight) Then 
     intMaxSide = intOldWidth 
    Else 
     intMaxSide = intOldHeight 
    End If 

    If (intMaxSide > MaxSideSize) Then 
     'set new width and height 
     Dim dblCoef As Double = MaxSideSize/CDbl(intMaxSide) 

     intNewWidth = Convert.ToInt32(dblCoef * intOldWidth) 
     intNewHeight = Convert.ToInt32(dblCoef * intOldHeight) 

    Else 

     intNewWidth = intOldWidth 
     intNewHeight = intOldHeight 
    End If 
    'create new bitmap 
    Dim bmpResized As Drawing.Bitmap = New Drawing.Bitmap(imgInput, intNewWidth, intNewHeight) 

    'save bitmap to disk 
    bmpResized.Save(ImageSavePath, fmtImageFormat) 

    'release used resources 
    imgInput.Dispose() 
    bmpResized.Dispose() 
    Buffer.Close() 

End Sub 

.............サイズを変更したいThis Link

からもらったコードです私の送信ボタンでは、私のコードを実行する必要がありますが、私は入力がBufferフィールドのために必要であるかどうか分かりません。

Protected Sub btnUpload_Click() Handles btnUpload.Click 

    ResizeFromStream("~Pics", 200, ??????????) 

End Sub 

ありがとうございます!

ファイルアップロードコントロールから画像を取得する必要があります。

+0

ここで、画像データの送信元はどこですか? –

+0

FileUpload1というファイルアップロードコントロールから – Etienne

答えて

0

あなたは、このようなストリームオブジェクトを渡すことができます。

Dim fs As New FileStream("C:\file.jpg", FileMode.Open) 

ResizeFromStream("~Pics", 200, fs) 

ので、コードはファイル「file.jpg」にIOを実行することになります。これは非常に大まかな例ですが、Jon Skeet氏が尋ねたように、画像がどこから来ているのかが重要です。私の例は単純な「あなたが始めた」タイプです。

+0

FileUpload1というFileUploadコントロールから取得したい – Etienne

+0

私はFileUploadコントロールに精通していませんが、使用することはできません: FileUpLoad1.SaveAs( "C:\" (FileMode.Open) ResizeFromStream( "〜Pics"、200、fs) –

0

FileUpload.FileContent getは、ファイルコンテンツのストリームです。

+0

私はこれを私の内部で行う必要があると言っています。 btnUpload_Click方法? ResizeFromStream私はこの何が起こっていない行う際に、ファイルがアップロードされませんので( "〜Picsの"、200、myFile.FileContent) 。 – Etienne

+0

はい。 あなたはPUに忘れてしまいましたtをファイル名に含めます。 ResizeFromStream( "〜Pics \ FILENAME.JPG"、200、myFile.FileContent) (私が思うと思うFileUploadから元のファイル名を得ることができます) – AndrewVos

+0

はい、FileUpload.FileNameです。したがって、ResizeFromStream(Path.Combine( "〜写真"、FileUpload.FileName)、200、myFile.FileContent) – cdm9002

関連する問題