2011-06-25 21 views
5

Bir bitmap nesnesini bir görüntü olarak Amazon S3'e nasıl kaydedebilirim?C kullanarak Amazon S3 üzerinde bir kovaya dosya ekleme 0 #

Herşeyi ayarlamıyorum ama sınırlı C keskinliğim bu işi bitirmemi engelliyor.

// I have a bitmap iamge 
Bitmap image = new Bitmap(width, height); 

// Rather than this 
image.save(file_path); 

// I'd like to use S3 
S3 test = new S3(); 
test.WritingAnObject("images", "testing2.png", image); 

// Here is the relevant part of write to S3 function 
PutObjectRequest titledRequest = new PutObjectRequest(); 
titledRequest.WithMetaData("title", "the title") 
      .WithContentBody("this object has a title") 
      .WithBucketName(bucketName) 
      .WithKey(keyName); 

yalnızca bir dize almak ve dosyanın vücutta olarak kaydedebilirsiniz S3 işlevini de görebileceğiniz gibi.

Bunu bir bitmap nesnesinde geçirmeme ve görüntü olarak kaydetmeme izin verecek şekilde nasıl yazabilirim? Belki bir akım olarak? Ya da bir bayt dizisi olarak?

Yardımlarınız için minnettarım.

+0

Ummm ... resminizi bir dosyaya kaydedin, dosyayı bir hex dizesine dönüştürün ve bu dizgeyi iletin mi? S3 hakkında hiçbir şey bilmiyorum ama bence bu yardımcı olabilir. – Vercas

+0

Görüntüyü önce bir dosyaya kaydetmenin yükünü istemiyorum. Görüntü hala bellekte iken yapılabilir eminim. – Abs

+0

Daha sonra bir bellek akışına kaydedin. – Vercas

cevap

11

Sen WithInputStream veya WithFilePath kullanmak. Örneğin, yeni bir görüntüyü S3'e kaydetme:

+0

Tamam, bu bir anlam ifade ediyor, bir Bitmap nesnesini bir bellek akışına nasıl dönüştürürüm? Bu basit bir soru ise özür dilerim ama ben C# geldiğinde bir acemi. – Abs

+1

@Abs: Bir Bitmap'i MemoryStream'e kaydetme örneği eklemek için kod örneğini güncelledim. – vcsjones

+0

Çalıştı. Ama aramayı WithKey (keyName) 'den sonra .WithInputStream (memoryStream)' e koymak zorunda kaldım. Ben şimdi bunu yapmaya çalıştığımda kapalı bir akışa erişemeyen bir çözümü çözmem gerekiyor: 'kullanarak (S3Response responseWithMetadata = client.PutObject (titledRequest))' - herhangi bir fikir? – Abs

2

Seti isteğiniz nesnesinin inputStream özelliği:

titledRequest.InputStream = image;