C++ - GDIPLUS:: image:: save(*istream): как сохранить gif-файл?
у меня есть этот код для сохранения gif файла:
friend std::ostream& operator << (std::ostream& lhs, image& rhs) { //Create an empty IStream: IStream* pIStream = nullptr; if(CreateStreamOnHGlobal(NULL, FALSE, (LPSTREAM*)&pIStream)!=S_OK) DebugText("error on creating an empty IStream"); //Create the Encoder way: //choose image format for save it on IStream: // Get encoder class id for jpg compression // for other compressions use // image/bmp // image/jpeg // image/gif // image/tiff // image/png CLSID pngClsid; GetEncoderClsid(L"image/gif", &pngClsid); // Setup encoder parameters EncoderParameters* encoderParameters = (EncoderParameters*)malloc(sizeof(EncoderParameters) + (rhs.framecount-1)* sizeof(EncoderParameter)); encoderParameters->Count = 1; ULONG parameterValue = 50; // the for loop is pointless and does nothing encoderParameters->Parameter[0].Guid = EncoderSaveFlag; encoderParameters->Parameter[0].Type = EncoderParameterValueTypeLong; encoderParameters->Parameter[0].NumberOfValues = 1; encoderParameters->Parameter[0].Value = ¶meterValue; //save the 1st frame: parameterValue = EncoderValueMultiFrame; Status stat; rhs.img->SetPalette(rhs.imgPallet); if(rhs.img->Save(pIStream, &pngClsid, encoderParameters) != Ok) { pIStream->Release(); MessageBox("error on saving to IStream"); } for(int i=1; i
файл сохраняется, но задний цвет изменяется(автоматически). может быть, потому, что он прозрачный. я не знаю. может ли кто-нибудь дать мне совет?
Что я уже пробовал:
я попробовал использовать палитру, но безуспешно :(