2010-12-22 6 views
12

¿Cómo funcionan estas aplicaciones de iphone para que estos filtros funcionen con las fotos? He tenido curiosidad sobre esto por un tiempo. ¿Hay una biblioteca que hace esto?¿Cómo hacen Instagram o Hipstamatic los filtros de fotos?

+0

La misma pregunta aquí. Creo que acaban de desarrollar su propia biblioteca para tal funcionalidad. Pero, por supuesto, no de código abierto. –

+0

Dup de http://stackoverflow.com/questions/3928862/instagram-image-filters-on-iphone – titaniumdecoy

Respuesta

4

Existen varias bibliotecas de imágenes que funcionan en iOS ahora, y se pueden adaptar muchas bibliotecas C/C++ (aunque podría requerir bastante trabajo, dependiendo del código).

Tres que se me ocurre ahora son:

simple-iphone-image-processing

ImageMagick

MGImageUtilities

Ninguno tiene filtros exactamente iguales a las aplicaciones, pero algunos pueden ser combinado para hacer algo similar cosas. MGImageUtilities tiene un método de tinte que hará que el color sepiatone.

Espero que te ponga en el camino correcto.


Editado para agregar

Ah, y he aquí un ejemplo de Apple de utilizar OpenGL para procesar las imágenes:

GLImageProcessing

2

Bueno, usted podría hacer un pequeño truco. Cree un degradado de color - enter image description here

como este. y luego agrega cualquier filtro de Instagram sobre él. Ahora que tiene la imagen, puede restar los valores de los valores de escala de grises que ya tiene. Trazar los valores de rgb en un ajustador de curva le daría exactamente los ajustes realizados. Uno de ellos son así:

$r=[48,57,65,72,79,86,91,96,104,109,115,122,132,143,154]; 
$g=[10,20,34,52,73,94,117,139,157,172,192,204,214,223,229]; 
$b=[41,34,87,115,139,163,185,204,219,230,238,244,247,250,252]; 

A veces también se consiguen efectos multiplicando una imagen existente dado sobre la imagen original. Consulte los Consejos adicionales: http://docs.rainmeter.net/tips/colormatrix-guide Ahora, si desea crear efectos en las imágenes. El concepto es así. Tome cada píxel de una imagen, y luego realice algunas manipulaciones numéricas en los píxeles y luego colóquelos en un lienzo en blanco en el mismo orden de la imagen original.

Así que digamos que usted tiene una imagen

+++++++++++++ 
|100| 80| 70| 
| 50| 30| 60| 
+++++++++++++ 

En aras de la simplicidad supongamos que cada uno números representan un valor RGB donde R = G = B, por lo que para image[0][0]R=G=B=100

Ahora digamos desea hacer una imagen en escala de grises de lo anterior. Así que para la fórmula escala de grises es x = 0.299r + 0.587g + 0.114b (en general, se puede ajustar el valor) .. Así aplicar las matemáticas, obtener el valor de x y sustituirlos. (Para escala de grises imagen R y G y B tienen los mismos valores).

Así que al final te nueva imagen se convierte en:

+++++++++++++ 
| x0| x1| x2| 
| x3| x4| x5| 
+++++++++++++ 

Del mismo modo para sepia, hay alguna fórmula para calcular los valores de r, g, b

A veces se desea agregar un desenfoque gaussiano o tal vez superponer imágenes. Estos son todos manipulación de píxeles. Ver de la fórmula de los modos de mezcla here

he trabajado en algo similar o años Hace dos. Java image applet y en [Javascript así] (https://github.com/argentum47/JustBnW)

Cuestiones relacionadas