PNGwriter es una librería de C++ para crear
imágenes PNG.
Últimas Noticias: Nueva
versión y un nuevo integrante — agosto 2015
Ha pasado bastante tiempo desde la última versión de PNGwriter. Gracias a la ayuda generosa de Axel Hübl (@ax3l) se han eliminado muchos bugs, hay un nuevo método de compilación, y PNGwriter ya está en GitHub. Axel es ahora un miembro activo y valioso del equipo PNGwriter, uniéndose a Paul Blackburn, quien creó PNGwriter en 2002. Bienvenido a bordo, Axel! Este incentivo para tomar acción no podría haber venido en mejor momento, dado que el sitio donde antes estaba hosteado el proyecto PNGwriter, SourceForge.net, ya no es lo que nosotros consideramos un aporte positivo a la comunidad Open Source. Este website y los archivos que se encuentran presentemente hosteados en SourceForge.net se quedarán ahí, pero después de ésta versión, sólo se publicarán las nuevas versiones en el repository de PNGwriter en repository de PNGwriter en GitHub. No te olvides! Lamentablemente la versión 0.5.4 es la última que cuenta con documentación y páginas web actualizadas en español. La página web en español de PNGwriter (lo que estás leyendo) no se actualizará a futuro. La página en inglés se mantendrá actualizada, y PNGwriter siempre tendrá documentación actualizada en inglés. Les doy las gracias a ustedes, usuarios de PNGwriter, por su paciencia, bug fixes, y sugerencias. Espero que tengan el mismo entusiasmo que tenemos por ver qué traerán los próximos trece años de PNGwriter! Paul Blackburn San José, California 31 de agosto, 2015 Resumen PNGwriter es una librería gráfica que usa
el formato PNG. La interface ha sido diseñada para ser lo más
simple e intuitiva posible. Permite:
La presencia online de PNGwriter consiste de:
Preguntas frecuentes: Si tus preguntas no son respondidas, haz la pregunta en el foro PNGwriter Forum, o anda a Contactos y mandame un email. Porqué usar la librería PNGwriter? Porque es una manera rápida y fácil de
plotear directamente desde tu programa de C++.
PNGwriter permite que te enfoques en tu programa, y evita que pierdas tiempo en aprender cómo manejar y crear imágenes PNG. Sólo necesitas especificar el tamaño de tu imagen, y luego vas ploteando pixel por pixel en un color dado, usando la función plot .PNGwriter fue escrito originalmente teniendo en mente a los científicos. La necesidad de crear imágenes desde un programa surge generalmente como parte natural del uso científico de la programación. Sacar los datos desde el programa a una imagen de alta calidad de manera eficiente puede a veces ser difícil, especialmente si el usuario no es un programador muy experimentado. Los métodos estándares pueden ser altamente ineficientes o demasiado complejos como para ser empleados por un principante en tiempo limitado. PNGwriter fue escrito justamente para ofrecer una alternativa. Su interface es extremadamente intuitiva, hay sólo un objeto nuevo para aprender (la clase PNGwriter), en otras palabras, no hay clases y subclases para pixeles, colores, bitmaps, nombres de archivo, etc. Con tal de que sepas de qué color quieres el pixel en la posición (x, y), puedes implementar cualquier algoritmo que quieras. Quieres jugar con autómatas celulares pero estás cansado de ver los resultados como un arreglo de texto de 1 s y 0 s?
Quieres explorar fractales tú mismo? Necesitas una manera rápida de
implementar ese algoritmo de reconocimiento de imágenes en el cual
estás trabajado PNGwriter te puede ayudar! Qué puedo hacer con PNGwriter? PNGwriter permite hacer lo siguiente con una imagen:
Al poder generar una cantidad arbitraria de imágenes PNG con cada corrida de tu programa, y dado que PNGwriter provee un método fácil de nombrar los archivos especificando sólo un número de índice, es posible crear videos de imágenes secuenciales. Para esto, uno podría usar FFmpeg, MEncoder o Quicktime Player de Apple. Qué *no* puedo hacer con PNGwriter? Hay ciertas cosas que PNGwriter no puede hacer. Por ejemplo, aunque PNGwriter (a partir de la versión 0.5.5) puede abrir una gran variedad de imágenes PNG, hay algunas variantes con las que tiene problemas. En resumen:
A pesar de estas limitaciones, PNGwriter probablemente abrirá la gran mayoría de imágenes que quieras abrir. Por favor ve, en la sección Ejemplos, una lista detallada de imágenes de prueba y cómo PNGwriter lidia con ellas. Porqué usar imágenes de tipo PNG? Porque son ampliamente conocidas e
incorporan compresión sin pérdidas.
Comparten ciertas características con las imágenes GIF, pero a diferencia de éstas, no están atadas por el copyright de la compresión LZW de los GIF. El formato PNG es abierto, libre y bueno. Ofrecen la posibilidad también de usar Alpha Channels (mejor que la simple transparencia, pero por favor nota que PNGwriter no soporta alpha channels) y un montón de otras cosas interesantes y útiles. Ni siquiera tienes que convertirlos si quieres mostrar tus resultados en tu página web: PNG significa Portable Network Graphics-- fueron diseñados para internet y cualquier browser decente los puede mostrar. De hecho, la mayoría de los gráficos en este sitio son PNG :-) Para mas información recomiendo visitar www.libpng.org. A quién está dirigida esta librería de C++? En el 2002 creé PPMWriter porque quería
algo que me permitiese plotear pixel por pixel una imagen, dando
sólo las coordenadas y los coeficientes de color de éste. Escogí
el formato PPM porque era simple de implementar y porque encontré
que las librerías tradicionales para crear imágenes eran demasiado
complejas para mi nivel de conocimiento. A la larga el format PPM
resultó tener demasiadas deficiencias.
En principio le podría ser útil a
cualquiera que necesite plotear imágenes de alta calidad
generada por programas de C++ (simulaciones, cálculos,
etc.) y no diagramas.
Qué necesito para usar la librería PNGwriter? Un compilador de C++, y libpng.
libpng funciona en Unix, DOS, OS/2, Windows, Mac OS, BeOS, Amiga,
etc. Si tu compilador es viejo, mi recomendación personal es GCC.
Mira www.cplusplus.com/info/compilers/#free
para obtener información acerca de compiladores libres. Si quieres
compilar PNGwriter con soporte de texto, necesitarás FreeType
2. Si está en Windows, mira la sección "Cómo
puedo usar PNGwriter en Windows?".
PNGwriter puede dibujar texto y ejes de gráficos? Sí, PNGwriter ahora tiene soporte
completo de texto (incluyendo soporte para codificación UTF-8),
pero no crea ejes. Ésta es la razón oficial: PNGwriter está
orientado a la generación rápida e intuitiva de imágenes de alta
calidad resultando de simulaciones científicas o del procesamiento
de imágenes. Cualquier imagen bitmap que requiera ejes y que debe
ser publicado en calidad de publicación debería usar gráficos
vectoriales para los ejes (y quizás el texto), no bitmap, y
combinar ambos en un EPS.
Así que todo está perdido? No hay nada que se pueda hacer? Claro que si! Aquí hay una solución: Crea imágenes PNG de los ejes de gráfico que quieres agregar a tu imagen, usando el método de tu elección (The Gimp, Photoshop, etc.). Hazlos negro sobre blanco, por ejemplo. Desde tu programa, abre este archivo con PNGwriter. Escribe una rutina simple que tome todos los pixeles negros, y los plotee en tu imagen, en la posicion que tu especificas, y en el color que quieras. Esto puede ser automatizado, de manera que se hace al terminar cada imagen que creas. Suena interesante, cómo se usa? Si quieres ver el ejemplo más simple
posible del uso de PNGwriter, anda a Quickstart.
Es lo mínimo que necesitas para usar PNGwriter (y, en realidad, lo
único que necesitas saber, en la gran mayoría de los casos).
Si quieres ver más ejemplos de PNGwriter
en uso, anda a Ejemplos.
Si quieres mirar el manual de PNGwriter,
anda a la sección Manual.
El paquete de PNGwriter, disponible en la sección Downloads
contiene dos ejemplos completos y un manual PDF. El archivo header
de la librería está extensamente comentado.
Si quieres hacer una pregunta, hazla en el PNGwriter Issue Tracker en GitHub. Cómo usar PNGwriter en Windows? Nota: Si bien en este sitio existen
guías para compilar PNGwriter con algunos compiladores populares
de Windows, no puedo ofrecer ni
soporte ni ayuda con esta tarea.
Deberís obtener una implementación en
Windows de GCC, el compilador C/C++ libre de la GNU (dos maneras
posibles de hacer esto son www.mingw.org
y www.cygwin.com). También
puedes usar Borland C++ Builder o Microsoft Visual C++ .NET en
Windows XP. Aquí hay dos explicaciones simples y paso a paso (en
inglés, por ahora): "Setting
Up PNGWriter for Borland C++ Builder Version 6 on Windows XP"
y "Setting
Up PNGWriter for Microsoft Visual C++ .NET on Windows XP".
Además, usar PNGwriter con Bloodshed Dev
C++ es bastante fácil, como comenta Siva Chandra: "Puedes bajar
las librerías pre-compiladas de freetype del website de GnuWin32:
gnuwin32.sf.net. Para
compilar a PNGwriter, crea un nuevo proyecto de librería de C++
llamado libpngwriter. Incluye el archivo header de PNGwriter y el
archivo de implementación en este nuevo proyecto. Compila. Eso es
todo! Ahora tendrás tu archivo libpngwriter.a listo para ser
usado. Nota que esto asumirá por defecto la disponibilidad de
freetype. Para remover ese supuesto, deberas compilar con esta
opción: -DNO_FREETYPE".
Nota: Debes cambiar el nombre de
pngwriter.cc a pngwiter.cpp para compilarlo con MSVC7. Si la
extension no se cambia, entonces la propiedad del directorio de
C/C++ para el proyecto no se será visible. En este caso el valor
por defecto de MSVC7 de usar headers precompilados en su build del
proyecto siempre tirará un error diciendo que no puede encontrar
un cierto header precompilado. Es necesario entonces cambiar esa
característica en las propiedades del proyecto para compilar la
librería PNGwriter exitosamente.
El usuario Giancarlos Colasante gentilmente
ha enviado un procedimiento que creó con ayuda de Siva Chandra:
"Como correr PNGwriter bajo Windows con Dev-C++":
Qué hay en el paquete PNGwriter? El tarball/zip de PNGwriter contiene lo siguiente:
Cómo puedo linkear a el proyecto PNGwriter desde mi página? Encontraste útil a PNGwriter? Si es así
entonces corre la voz, y cuéntale a los demás, poniendo el
siguiente botón en tu página. Quien sabe, podrí ser exactamente lo
que alguien estábuscando.
Si quieres, puedes linkear directamente a la imagen del sitio de PNGwriter. En tal caso, agrega el siguiente código a tu página: <a href="http://pngwriter.sourceforge.net/"><img
src="http://pngwriter.sourceforge.net/site_images/madewith.png"
width="88" height="31" alt="Made With PNGwriter" BORDER="0"
target="_blank"> </a > Cuál es el estado presente del desarrollo de PNGwriter? A contar de la versión 0.5.5 (agosto 2015), PNGwriter se encuentra otra vez en desarrollo activo. Revisa la página de PNGwriter en GitHub para mantenerte al tanto de actualizaciones. |
||
© 2002-2015 Paul Blackburn |