Perl en Español

  1. Home
  2. Tutoriales
  3. Foro
  4. Artículos
  5. Donativos
  6. Publicidad
 

Lectura de bitmap de windows -BMP-

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Intermedio
Mensaje Dom Abr 30, 2006 6:18 pm
jahc83
Perlero Nuevo
Perlero Nuevo
Registrado: 30 Abr 2006
Mensajes: 5
Lectura de bitmap de windows -BMP- Responder citando

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
Mensaje Dom Abr 30, 2006 10:07 pm
kidd
Creador de Perl en Español
Creador de Perl en Español
Registrado: 15 Oct 2003
Mensajes: 1389
Ubicación: México
Responder citando

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:

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
Mensaje Lun May 01, 2006 12:59 pm
jahc83
Perlero Nuevo
Perlero Nuevo
Registrado: 30 Abr 2006
Mensajes: 5
kidd... Responder citando

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
Mensaje Mar May 02, 2006 2:38 pm
creating021
Vive para Perl en Español
Vive para Perl en Español
Registrado: 23 Feb 2006
Mensajes: 478
Ubicación: Frente al monitor
Responder citando

Busca en esta pagina:
http://www.wotsit.org/
Encuentras la de IBM y la de Windows
Mensaje Mar May 02, 2006 5:15 pm
jahc83
Perlero Nuevo
Perlero Nuevo
Registrado: 30 Abr 2006
Mensajes: 5
creating021 Responder citando

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!!
Mensaje Mar May 02, 2006 7:23 pm
kidd
Creador de Perl en Español
Creador de Perl en Español
Registrado: 15 Oct 2003
Mensajes: 1389
Ubicación: México
Responder citando

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.baboonsoftware.com/archives-tut/000154.html


Saludos
Mensaje Mar May 02, 2006 11:43 pm
jahc83
Perlero Nuevo
Perlero Nuevo
Registrado: 30 Abr 2006
Mensajes: 5
kidd Responder citando

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! Smile.


Saludos
Mensaje Mie May 03, 2006 1:14 pm
explorer
Moderador
Moderador
Registrado: 24 Jul 2005
Mensajes: 4084
Ubicación: Valladolid, España
Responder citando

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....
Mensaje Vie May 05, 2006 5:37 pm
jahc83
Perlero Nuevo
Perlero Nuevo
Registrado: 30 Abr 2006
Mensajes: 5
explorer Responder citando

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
Publicar nuevo tema   Responder al tema    Foros de discusión -> Intermedio Todas las horas son GMT - 6 Horas
Página 1 de 1



Powered by phpBB © 2001, 2005 phpBB Group