Last active
January 1, 2016 16:39
-
-
Save neosergio/8172395 to your computer and use it in GitHub Desktop.
Jugando con Ruby: Algoritmo simple sobre un contenedor y una imagen que se ajusta al tamaño del contenedor dinamicamente
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
puts "De las siguientes opciones del tamaño del contenedor" | |
puts "1 - Ancho contenedor 200 - Alto contenedor 100" | |
puts "2 - Ancho contenedor 100 - Alto contenedor 200" | |
puts "3 - Dejame ingresar los valores manualmente del contenedor" | |
print "Elija su preferencia: " | |
STDOUT.flush | |
opcion = gets.to_i | |
if opcion == 1 | |
ancho_contenedor = 200 | |
alto_contenedor = 100 | |
elsif opcion == 2 | |
ancho_contenedor = 100 | |
alto_contenedor = 200 | |
elsif opcion == 3 | |
print "Ingrese el ancho del contenedor: " | |
ancho_contenedor = gets.to_f | |
print "Ingrese el alto del contenedor: " | |
alto_contenedor = gets.to_f | |
if ancho_contenedor <= 0 or alto_contenedor <= 0 | |
puts "El ancho o alto de la imagen no puede ser cero ni invalido" | |
abort | |
end | |
else | |
puts "La opción ingresada no es valida, intentelo luego" | |
abort | |
end | |
puts "El contenedor es de #{ancho_contenedor} x #{alto_contenedor}" | |
print "Ingrese el ancho y el alto de la imagen (en ese orden): " | |
ancho_imagen = gets.to_f | |
alto_imagen = gets.to_f | |
if ancho_imagen <= 0 or alto_imagen <= 0 | |
puts "Uno de los valores ingresados no es valido" | |
abort | |
end | |
proporcion_contenedor = ancho_contenedor.to_f / alto_contenedor.to_f | |
proporcion_imagen = ancho_imagen / alto_imagen | |
puts "Proporcion del contenedor: #{proporcion_contenedor}, Proporcion de la imagen: #{proporcion_imagen}" | |
if ancho_imagen <= ancho_contenedor and alto_imagen <= alto_contenedor | |
print "la imagen va como tal, no hay resize" | |
nuevo_ancho_imagen = ancho_imagen | |
nuevo_alto_imagen = alto_imagen | |
elsif proporcion_contenedor > 1 | |
if proporcion_imagen > 1 | |
nuevo_ancho_imagen = ancho_contenedor | |
nuevo_alto_imagen = nuevo_ancho_imagen / proporcion_imagen | |
if nuevo_alto_imagen > alto_contenedor | |
nuevo_alto_imagen = alto_contenedor | |
nuevo_ancho_imagen = nuevo_alto_imagen * proporcion_imagen | |
end | |
else | |
nuevo_alto_imagen = alto_contenedor | |
nuevo_ancho_imagen = nuevo_alto_imagen * proporcion_imagen | |
end | |
else | |
if proporcion_imagen > 1 | |
nuevo_ancho_imagen = ancho_contenedor | |
nuevo_alto_imagen = nuevo_ancho_imagen / proporcion_imagen | |
else | |
nuevo_alto_imagen = alto_contenedor | |
nuevo_ancho_imagen = nuevo_alto_imagen * proporcion_imagen | |
if nuevo_ancho_imagen > ancho_contenedor | |
nuevo_ancho_imagen = ancho_contenedor | |
nuevo_alto_imagen = nuevo_ancho_imagen / proporcion_imagen | |
end | |
end | |
end | |
puts "Las nuevas dimensiones son #{nuevo_ancho_imagen} x #{nuevo_alto_imagen}" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment