(私はStackOverflowの上でこれについて見つけることができるすべての同様の質問を調査してきたが、それらのどれも私の問題を解決するために私を助けていない)Amazon S3のアニメーションGIF - のみアップロード最初のフレーム
私はGIF画像をアップロードすることができますrequest.FileBytesはバイト配列である。このようなアマゾンS3、:
public bool UploadFile(CdnFile request)
{
var transfer = new TransferUtility(CdnConfig.AccessKey, CdnConfig.SecretKey, ep);
var uploadRequest = new TransferUtilityUploadRequest();
uploadRequest.InputStream = new MemoryStream(request.FileBytes);
var result = transfer.BeginUpload(s3Req2, cb, null);
transfer.EndUpload(result);
}
これは、.jpgのために正常に動作します、しかし、アニメーション.GIFために、GIFの唯一の第一フレームがアップロードされた(私がアップロードした場合S3経由で直接同じgif、それはうまく動作します)。だから私はストリーミングやファイルを変換する方法と関係があるが、問題がどこで発生するのかを知る方法がわからない。
次のようにrequest.FileBytesを作成します。ここで 'imageData'は画像の生データです(ChromeはS3にアップロードしようとしているアニメーションgifプレビューを表示するときにこの画像データを使用し、 ):
var data = Convert.FromBase64String(imageData);
var img = new Bitmap(new MemoryStream(data));
fileBytes = img.SaveAsGif();
public static byte[] SaveAsGif(this Image img, long quality = 100)
{
ImageCodecInfo gifEncoder = GetEncoder(ImageFormat.Gif);
Encoder myEncoder = Encoder.Quality;
EncoderParameters myEncoderParameters = new EncoderParameters(1);
EncoderParameter myEncoderParameter = new EncoderParameter(myEncoder, quality);
myEncoderParameters.Param[0] = myEncoderParameter;
using (MemoryStream msGif = new MemoryStream())
{
img.Save(msGif, gifEncoder, myEncoderParameters);
return msGif.ToArray();
}
}