Autor
|
Tema: Problema Matematico (Leído 3,155 veces)
|
LeandroA
|
Hi, tengo un problema, que me voló la cabeza seguro que es una boludes mas grande que una casa pero se me quemaron las neuronas, es medio complicado explicarlo pero voy a intentarlo.
supongamos una imagen, esta tiene unas dimensiones de 16 x 16px por cada pixel de esa imagen tenemos 3 bytes esto da como resultado un array de 768 bytes
16 x 16 x 3 = 768
otro ejemplo
32 * 16 * 3 = 1536
bien haciendo esa ecuación puedo saber la cantidad de bytes que ocupara la imagen, ahora supongamos que yo quiero ingresar la cantidad de bytes y deseo que la imagen sea lo mas cuadrada posible que ecuación tengo que hacer???
yo puedo poner (tomando el primer ejemplo)
Ancho = Sqr(768 / 3) Alto = Ancho
pero que pasa si el array que ingreso es de 769 bytes tengo un resultado erróneo de 16,0104.. y esto no es una medida valida para una imagen ya que no puede tener decimales.
entonces puede que tenga que adicionar uno/s bytes extra al array para que sea un valor "par" así poder obtener un resultado correcto, no importa que sea una imagen 100% cuadrada, pero que sea lo mas aproximado.
Se entiende??, Gracias
|
|
|
En línea
|
|
|
|
EddyW
|
Wenas LeandroA, Bueno, no se si entendí, eso se verá en mi respuesta Dim TmBytes As Long, WH As Long, Porct As Integer ' -> (17*17) * 3 -> 867 Bytes TmBytes = 900 ' -> WH=Width And Height WH = Sqr(Round(TmBytes / 3, 0)) ' -> Porcentaje Porct = ((WH * WH * 3) * 100) / TmBytes ' -> Show.. MsgBox Porct & "% al original"
No se si ha eso te referías, Para redondear, usa Round, luego saca un porcentaje. SaluDOS!!!
|
|
|
En línea
|
|
|
|
LeandroA
|
hola, no noes eso, pero de todas formas estoy confundido en algo creo que estoy malinterpretando algo lo que descrivi anteriormente no es tan asi, creo que es mejor cerrar la pregunta hasta tener en claro las cosas. una imagen de 24 * 24 tiene 1728 (24 x 24 x 3 = 1728) pero una imagen de 25 * 25 tiene 1900 (25 x 25 x 3 = 1875) esto no cumple la regla que pensaba alto x ancho x 3 las imagenes tienen una profundidad de bits de 24 osea un savepicture de vb Option Explicit
Private Type BITMAPFILEHEADER '14 bytes bfType As Integer '"magic cookie" - must be "BM" bfSize As Long bfReserved1 As Integer bfReserved2 As Integer bfOffBits As Long End Type
Private Type BITMAPINFOHEADER '40 bytes biSize As Long biWidth As Long biHeight As Long biPlanes As Integer biBitCount As Integer biCompression As Long biSizeImage As Long biXPelsPerMeter As Long biYPelsPerMeter As Long biClrUsed As Long biClrImportant As Long End Type
Dim BFH As BITMAPFILEHEADER Dim BIH As BITMAPINFOHEADER
Private Sub Form_Load() Me.ScaleMode = vbPixels Picture1.BorderStyle = 0 Picture1.BackColor = vbWhite Picture1.Width = 24 Picture1.Height = 24 DoEvents SavePicture Picture1.Image, App.Path & "\Image1.bmp" LoadHeaderPicture App.Path & "\Image1.bmp" Debug.Print BIH.biSizeImage Picture1.Width = 25 Picture1.Height = 25 DoEvents SavePicture Picture1.Image, App.Path & "\Image1.bmp" LoadHeaderPicture App.Path & "\Image1.bmp" Debug.Print BIH.biSizeImage
End Sub
Private Sub LoadHeaderPicture(ByVal sPath As String) Open sPath For Binary Access Read As #1 Get #1, , BFH Get #1, Len(BFH) + 1, BIH Close #1 End Sub
a estudiar el formato bmp Fundamental
|
|
|
En línea
|
|
|
|
BlackZeroX
Wiki
Desconectado
Mensajes: 3.158
I'Love...!¡.
|
. Haber si entendi quieres que sea lo mas cuadro posible aun que sea Ancho = X y Alto = X+1 o en el mejor de los casos Ancho = X y Alto = X PERO SIEMPRE SIN PUNTOS DESIMALES?... es esto?... si es asi, solo es una ecuación de equivalencia... y he aqui dicho problema...
Dulces Lunas!¡.
|
|
« Última modificación: 22 Octubre 2010, 09:52 am por BlackZeroX▓▓▒▒░░ »
|
En línea
|
The Dark Shadow is my passion.
|
|
|
KuraraGNU
Desconectado
Mensajes: 209
|
A ver, yo visual basic se poco, pero podrías a:
Ancho = Sqr(768/3) Alto = Ancho
Transformar el resultado de Sqr(768/3) a Int o Integer, no se cómo se dirá (como se haga en VB), de manera que así pierdes los decimales y redondea. Después, haces:
int Tamaño = (768/3)//y le haceis una conversión explícita a int Ancho = Sqr(Tamaño)//Se le vuelve a hacer una conversión Alto = Tamaño - Ancho
|
|
« Última modificación: 22 Octubre 2010, 10:09 am por KuraraGNU »
|
En línea
|
|
|
|
[D4N93R]
Wiki
Desconectado
Mensajes: 1.646
My software never has bugs. Its just features!
|
HINT: El número que ingreses tiene que ser múltiplo de 3...
|
|
|
En línea
|
|
|
|
KuraraGNU
Desconectado
Mensajes: 209
|
HINT: El número que ingreses tiene que ser múltiplo de 3...
Pero eso no quiere decir que ese número tenga una raíz cuadrada exacta.
|
|
|
En línea
|
|
|
|
[D4N93R]
Wiki
Desconectado
Mensajes: 1.646
My software never has bugs. Its just features!
|
Ahm, no pero es un paso hacia adelante! Puedes probar con aspect ratios, es decir algo como 3:4. 1:1, 4:5 lo más cuadrado que puedas intentando varias posibilidades.
|
|
|
En línea
|
|
|
|
raul338
Desconectado
Mensajes: 2.633
La sonrisa es la mejor forma de afrontar las cosas
|
hola, no noes eso, pero de todas formas estoy confundido en algo creo que estoy malinterpretando algo lo que descrivi anteriormente no es tan asi, creo que es mejor cerrar la pregunta hasta tener en claro las cosas.
una imagen de 24 * 24 tiene 1728 (24 x 24 x 3 = 1728)
pero una imagen de 25 * 25 tiene 1900 (25 x 25 x 3 = 1875)
esto no cumple la regla que pensaba
alto x ancho x 3
las imagenes tienen una profundidad de bits de 24 osea un savepicture de vb
Esto es porque el formato BMP tiene algunas otras cosas ademas de la picture, como las cabeceras y espacios al pedo. Lo recuerdo de aca: Riemers DirectX Tutorial
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
[SOLUCIONADO] Problema matemático
.NET (C#, VB.NET, ASP)
|
Eleкtro
|
6
|
3,571
|
10 Enero 2013, 13:30 pm
por Danyfirex
|
|
|
[SOLUCIONADO] Problema matemático (vigésimo quinta edición xD)
.NET (C#, VB.NET, ASP)
|
Eleкtro
|
6
|
4,032
|
16 Marzo 2013, 15:58 pm
por $Edu$
|
|
|
Sphynx.exe y problema matemático
Ingeniería Inversa
|
ViejoMajara
|
6
|
3,710
|
17 Noviembre 2014, 12:38 pm
por ViejoMajara
|
|
|
'El cumpleaños de Cheryl': el problema matemático viral no da tregua al mundo
Noticias
|
wolfbcn
|
4
|
2,301
|
16 Abril 2015, 12:14 pm
por compilacion
|
|
|
El matemático Terence Tao supera a un ordenador en la resolución de un problema
Foro Libre
|
El_Andaluz
|
2
|
1,927
|
26 Septiembre 2015, 15:15 pm
por ivancea96
|
|