2

1 つの画像のサイズを 5 つの異なるサイズに変更しようとしています (そして、それらを amazonS3 にアップロードします)。

私はimageresizer.netを使用しています

問題は、入力ストリームを 2 回使用できないことです。初めて動作します。

    Dim SmallStream As Stream = New MemoryStream
    Dim TinyStream As Stream = New MemoryStream

    If FileUpload1.HasFile Then
        **ImageResizer.ImageBuilder.Current.Build(FileUpload1.PostedFile.InputStream, SmallStream, New ResizeSettings("maxwidth=100&maxheight=100"))
        ImageResizer.ImageBuilder.Current.Build(FileUpload1.PostedFile.InputStream, TinyStream, New ResizeSettings("maxwidth=100&maxheight=100"))**
        AmazonUploadFile("SmallImages/" & FileUpload1.FileName, SmallStream)
        AmazonUploadFile("TinyImages/" & FileUpload1.FileName, TinyStream)
    End If




Public Shared Function GetS3Client() As AmazonS3
    Dim appConfig As NameValueCollection = ConfigurationManager.AppSettings
    Dim s3Client As AmazonS3 = AWSClientFactory.CreateAmazonS3Client(AWS_ACCESS_KEY, AWS_SECRET_KEY)
    Return s3Client
End Function

Public Sub AmazonUploadFile(S3Key As String, FileStream As Stream)
    Dim request As New PutObjectRequest()
    request.WithBucketName(BUCKET_NAME)
    request.WithKey(S3Key).InputStream = FileStream
    request.WithCannedACL(S3CannedACL.PublicRead)
    GetS3Client.PutObject(request)
End Sub

2 回目に取得しようとすると、コードが壊れますFileUpload1.PostedFile.InputStream

4

2 に答える 2

1

ImageResizer は Image オブジェクトをそのメソッドに受け入れると思います。そのため、最初に InputStream を Image オブジェクト (Image.FromStream()) に読み込むと、そのイメージ オブジェクトを繰り返し使用できます。

于 2012-03-21T15:34:16.280 に答える
1

[免責事項: 私は http://imageresizing.net/ の作成者です]

ImageResizerFileUpload1.PostedFileの代わりにFileUpload1.PostedFile.InputStream渡すと、読み取りごとにストリームを先頭に再シークする処理が自動的に処理されます。(3.1.5 以降を使用していることを確認してください)。

ImageJobまたは、 class と setを使用しResetSourceStream=trueます。

于 2012-03-26T12:16:27.703 に答える