Bitmap bff(L"1.jpg");
bff.Save(L"2.jpg", &Gdiplus::ImageFormatJPEG, NULL);

Esto crea un nuevo archivo 2.jpg con cero bytes de longitud.
¿No se supone que escribir un archivo de imagen que es idéntica a la 1.jpg?

¿Por qué estoy teniendo cero bytes de longitud archivos?
Yo estoy haciendo esta prueba ya que la escritura de otros mapas de bits para los archivos, el resultado en la misma salida.

InformationsquelleAutor Karim Agha | 2009-10-18

3 Comentarios

  1. 7

    He aquí una forma rápida de guardar, ya que GetEncoderClsid es una función personalizada:

    //Save to PNG
    CLSID pngClsid;
    CLSIDFromString(L"{557CF406-1A04-11D3-9A73-0000F81EF32E}", &pngClsid);
    bmp.Save(L"file.png", &pngClsid, NULL);

    y aquí la Id para otros formatos:

    bmp: {557cf400-1a04-11d3-9a73-0000f81ef32e}
    jpg: {557cf401-1a04-11d3-9a73-0000f81ef32e}
    gif: {557cf402-1a04-11d3-9a73-0000f81ef32e}
    tif: {557cf405-1a04-11d3-9a73-0000f81ef32e}
    png: {557cf406-1a04-11d3-9a73-0000f81ef32e}
    • Podría usted mostrar dónde encontrar esos valores?
    • tio, que ha sido casi 2 años atrás. Creo que tengo desde la inversión de la GDI+ biblioteca de sí mismo.
  2. 1

    &Gdiplus::ImageFormatJPEG es el valor incorrecto para enviar como segundo parámetro (así, ¿por qué el nuevo archivo de cero bytes grandes). Echa un vistazo a el código de ejemplo en la parte inferior de la Imagen::Save() página de referencia en la que se demuestra el uso adecuado de los Save().

    • Cuando estoy usando el código de la muestra, el uno con GetEncoderClsid, estoy recibiendo un error «Invalid Parameter». El valor de retorno del método de Guardar es de 2. y no hay nada escrito.
    • Mirando hacia atrás en tu otra pregunta, llame GetEncoderClsid() sin embargo, todavía puede terminar pasando &Gdiplus::... a Save(). En su lugar usted debe estar pasando el CLSID que les fue dado por GetEncoderClsid()
    • También, podría ser que el codificador JPEG requiere parámetros? Se pasa NULL como el tercer parámetro, pero podría ser que para el codificador JPEG de la ‘calidad’ de configuración no es opcional, como en este msdn.microsoft.com/en-us/library/ms533844(VS.85).aspx ejemplo?
    • AndreyT: Para mí, al menos, Save() corre bien en formato Jpeg con un tercer parámetro NULL
  3. 1

    AFAIK, no se puede simplemente pasar el formato de la imagen GUID (‘ImageFormatJPEG’ en su caso) a ‘Imagen::Guardar’ método. El segundo argumento se supone que para mantener el codificador GUID, no un formato GUID. Ver un ejemplo aquí

Dejar respuesta

Please enter your comment!
Please enter your name here