• Publicidad

Lectura de bitmap de windows -BMP-

¿Ya sabes lo que es una referencia? Has progresado, el nível básico es cosa del pasado y ahora estás listo para el siguiente nivel.

Lectura de bitmap de windows -BMP-

Notapor jahc83 » 2006-04-30 19:18 @845

Saludos a todos, es la primera vez que escribo aquí...

Bueno tengo un problema, tengo como proyecto final de sistemas operativos 1, leer un bitmap, mostrar su fileheader, su infoheader, su paleta de colores, e invertir a escala de grises la imagen en el caso de imágenes de 24 bits, no sé perl, nunca lo había usado, apenas estoy aprendiendo algunas cosas, ya tengo las 2 primeras, que no fue tan complicado, excepto por que tengo que usar el unpack() y no sabía cómo se usaba esa función o para qué servía, solo me quedan las otras 2, mostrar la paleta de colores e invertir los colores a grises, el problema es que no sé cómo hacerlo, ya busqué en internet cómo acceder a la paleta de colores de un BMP de windows y no encuentro nada, ojalá ustedes puedan ayudarme, porque su entrega es para el próximo miércoles...

de antemano, gracias a los que puedan ayudarme!
saludos
"Porque de tal manera amó Dios al mundo, que ha dado a su Hijo Unigénito, para que todo aquél que en Él crea, no se pierda, mas tenga vida eterna"
Juan 3:16
jahc83
Perlero nuevo
Perlero nuevo
 
Mensajes: 5
Registrado: 2006-04-30 19:11 @841

Publicidad

Notapor kidd » 2006-04-30 23:07 @005

Hola:

Te recomiendo que uses el Image::Magick lo cual te permite manipular imagenes de manera realmente sencilla. Por ejemplo, algunas cosas que puedes hacer:

Código: Seleccionar todo
use strict;
use Image::Magick;


my $image;

#Inicializamos el objeto
$image = Image::Magick->new;

#Leemos la imagen BMP
$image->Read('mi_imagen.bmp');


#Tipo de imagen
# Bilevel, Grayscale, GrayscaleMatte, Palette,
# PaletteMatte, TrueColor, TrueColorMatte,
# ColorSeparation, ColorSeparationMatte, Optimize
my $type = $image->Get('type');


#Cantidad de colores que tiene la imagen
my $colors = $image->Get('colors');


#Convertimos la imagen a escala de grises
$image->Quantize(colorspace=>'gray');


#Guardamos la imagen modificada en un nuevo archivo
$image->Write(filename=>'mi_imagen_gris.bmp');



Es realmente sencillo, te recomiendo que leas el manual pues lo más seguro es que vas a encontrar todo lo que necesitas con el módulo:
http://www.imagemagick.org/script/perl-magick.php



Saludos
Uriel Lizama Perl programmer fundador de Perl en Español
Perl Programming Language
Avatar de Usuario
kidd
Creador de Perl en Español
Creador de Perl en Español
 
Mensajes: 1166
Registrado: 2003-10-15 16:52 @744
Ubicación: México

kidd...

Notapor jahc83 » 2006-05-01 13:59 @624

kidd:
Gracias por contestar a mi pregunta, voy a investigar sobre ese módulo y a ver qué saco para hacer esto, nuevamente gracias.


Saludos
"Porque de tal manera amó Dios al mundo, que ha dado a su Hijo Unigénito, para que todo aquél que en Él crea, no se pierda, mas tenga vida eterna"
Juan 3:16
jahc83
Perlero nuevo
Perlero nuevo
 
Mensajes: 5
Registrado: 2006-04-30 19:11 @841

Notapor creating021 » 2006-05-02 15:38 @693

Busca en esta pagina:
http://www.wotsit.org/
Encuentras la de IBM y la de Windows
Expect the worst, is it the least you can do?
Avatar de Usuario
creating021
Perlero frecuente
Perlero frecuente
 
Mensajes: 595
Registrado: 2006-02-23 16:17 @720
Ubicación: Frente al monitor

creating021

Notapor jahc83 » 2006-05-02 18:15 @802

creating021:

Ya había visto esa página antes y de hecho de ahí me basé en el *.doc para saber qué tipo de dato le corespondía a cada elemento del infoheader, esos dos ya los tengo, el problema que tengo ahorita es que no sé como grabar la nueva paleta convertida a grises en el nuevo archivo, porque me pinta la nueva imagen toda de negro.


kidd:

Seguí tu consejo de utilizar imagemagick, y no sabes la sorpresa que me llevé de ver lo fácil que es con 5 líneas, no te miento genero la imagen en gris y la cargo, todavía hasta me dí el lujo de usar gtk (que tampoco sé usar gtk, pero viendo ejemplos y la api, me voy guiando!!).


Gracias de verdad!
Saludos!!
"Porque de tal manera amó Dios al mundo, que ha dado a su Hijo Unigénito, para que todo aquél que en Él crea, no se pierda, mas tenga vida eterna"
Juan 3:16
jahc83
Perlero nuevo
Perlero nuevo
 
Mensajes: 5
Registrado: 2006-04-30 19:11 @841

Notapor kidd » 2006-05-02 20:23 @891

Pues es de las principales ventajas que tiene Perl, la existencia de CPAN. Muchas veces nuestros problemas ya han sido solucionados por otras personas que tienen la gentileza de compartirlo, dándole a Perl un gran poder con el uso de módulos.

Ahora, acerca de GTK, nuestro amigo Marco hizo un tutorial excelente que habla acerca de como hacer interfases gráficas usando el GTK, el tutorial ha sido publicado en el sitio y lo puedes encontrar en la siguiente dirección:
http://perlenespanol.com/archives-tut/000154.html


Saludos
Uriel Lizama Perl programmer fundador de Perl en Español
Perl Programming Language
Avatar de Usuario
kidd
Creador de Perl en Español
Creador de Perl en Español
 
Mensajes: 1166
Registrado: 2003-10-15 16:52 @744
Ubicación: México

kidd

Notapor jahc83 » 2006-05-03 00:43 @071

kidd:

Sí, gracias a otros que comparten sus trabajos es que otros, podemos solucionar esos mismos problemas. Ese tutorial que comentas ya lo había leído porque precisamente de ahí es de donde estoy sacando el hacerle interfaz al programa este que entreo en unas horas! :).


Saludos
"Porque de tal manera amó Dios al mundo, que ha dado a su Hijo Unigénito, para que todo aquél que en Él crea, no se pierda, mas tenga vida eterna"
Juan 3:16
jahc83
Perlero nuevo
Perlero nuevo
 
Mensajes: 5
Registrado: 2006-04-30 19:11 @841

Notapor explorer » 2006-05-03 14:14 @635

Este módulo (Win32::GUI::DIBitmap) tiene buena pinta. Convierte entre formatos, muestra información y es capaz de reducir el número de colores, además de colgar diréctamente del árbol Win32, con lo que es fácil de integrar en programas en windows....
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

explorer

Notapor jahc83 » 2006-05-05 18:37 @817

explorer:

Si, me imago que ha de ser igual de fácil que el ImageMagick, pero supongo que es un módulo para perl sobre windows, no?, te pregunto porque le veo ahí el win32, y esto tiene que ser hecho en linux, porque es el sis. oper. en el que se centro la maestra.


Bueno, muchas gracias a todos por contestar e intentar ayudarme, vi muchas soluciones, y entre otras cosas, pude acceder a la paleta de los bitmaps sin los módulos que me sugirieron, pero se hicieron como 500 mil líneas mas obviamente, cuando termine esto, mandaré mi código a esta página para que los publiquen si quieren o haber que les hacen, hahaha...

Saludos
"Porque de tal manera amó Dios al mundo, que ha dado a su Hijo Unigénito, para que todo aquél que en Él crea, no se pierda, mas tenga vida eterna"
Juan 3:16
jahc83
Perlero nuevo
Perlero nuevo
 
Mensajes: 5
Registrado: 2006-04-30 19:11 @841


Volver a Intermedio

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 7 invitados