(내가 유래에 대해 찾을 수있는 모든 유사한 질문을 연구했습니다, 그리고 그들 중 누구도 내 문제를 해결하는 데 도움이 없음)아마존 S3 애니메이션 GIF는 - 단지 첫 번째 프레임을 업로드
난에있는 GIF를 업로드 할 수 있습니다 I는 업로드 경우
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);
}
이 다소 애니메이션 .gif 중요 들면 .JPG 잘 동작은 GIF의 1 프레임 (업로드 : request.FileBytes 바이트 배열이다 이런 아마존 S3, 같은 GIF를 통해 S3 직접, 잘 작동). 따라서 파일을 스트리밍 또는 변환하는 방법과 관련이 있어야하지만 문제가 발생하는 위치를 찾는 방법을 모르겠습니다.
다음과 같이 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();
}
}