[Windows Phone 8] Nokia Imaging SDK 1: Introducción

Hola a todos.

Con este artículo comenzamos una serie dedicada al SDK de imágenes de Nokia:

 

 

El pasado Jueves 11 de Julio, Nokia presentó su último terminal hasta la fecha, el Lumia 1020. Centrado alrededor de la calidad de imagen con su increíble cámara de 41mpx, capaz de realizar zoom digital sin perdida de calidad de hasta 4x y con unas opciones de configuración que lo alejan mucho de lo que entendíamos por una buena cámara hasta ahora, situándolo como el smartphone con mejor cámara disponible.

Pero junto a este dispositivo, Nokia realizó el anuncio de un SDK dedicado a la manipulación de imágenes. Este SDK no es exclusivo para terminales Nokia ni para el Lumia 1020. Podemos usarlo en nuestros desarrollos y distribuir nuestra aplicación sin ninguna limitación a cualquier terminal con Windows Phone 8. Este SDK incorpora:

  • 50 filtros y mejoras listos para aplicar a tus fotos.
  • API para realizar corte, redimensionado, rotación o deshacer ilimitado.
  • También incluye la opción de realizar una descodificación parcial de JPEG con la tecnología RAJPEG para trabajar con imágenes de alta resolución sin tener problemas con el consumo de memoria.

Así que si estás desarrollando una app en la que hagas cualquier tipo de trabajo con imágenes, seguro que te vendrá muy bien el Imaging SDK de Nokia. ¿Como lo puedes obtener y usar? Vamos a verlo…

Obteniendo el SDK en nuestro proyecto Windows Phone 8

Para empezar a trabajar con el Imaging SDK de Nokia, debemos crear un proyecto de aplicación Windows Phone 8 y abrir el gestor de paquetes de NuGet, donde escribiremos “Nokia Imaging SDK” y presionaremos el botón Install del paquete:

image

Nos pedirá que aceptemos la licencia y añadirá tres nuevos ensamblados a nuestro proyecto:

  • Nokia.Graphics.Imaging: Incluye la funcionalidad base del SDK, nativa.
  • Nokia.Graphics.Imaging.Managed: Nos facilita el acceso desde .NET a la funcionalidad nativa del SDK.
  • Nokia.InteropServices.WindowsRuntime: Incluye una clase usada internamente por el SDK, no usaremos ningún tipo en de este ensamblado en nuestro código.

En un proyecto manejado de Windows Phone 8 (VB.NET o C#) Necesitamos las tres referencias, tal cual las añade NuGet. Sin embargo, si intentamos ejecutar la aplicación en el emulador, veremos que no compila. Esto se debe a que las librerías del SDK están compiladas de forma nativa para x86 y para ARM. Si queremos ejecutar la aplicación en el emulador, debemos usar la versión x86 (la que referencia NuGet por defecto) y debemos especificar en la configuración del proyecto x86. Si deseamos ejecutar la aplicación en el dispositivo, tendremos que usar las librerías ARM. ¿Esto significa que tenemos que estar cambiando constantemente la versión referenciada? No, podemos hacerlo de forma más automática, para que dependiendo de la configuración establecida en cada momento, se usen unas o otras.

Preparando nuestro proyecto para ejecutarse

Lo primero que necesitaremos hacer es asegurarnos de que nuestro proyecto solo se compilará en las dos plataformas que soportamos: x86 y ARM. Para ello vamos al menú BUILD, a la opción Configuration Manager y desplegamos el combo de Active Solution Platforms que se encuentra arriba a la derecha. En este combo seleccionamos la opción Edit. Se abrirá una nueva pantalla, donde tendremos una lista con las tres plataformas: Any CPU, x86 y ARM.Tenemos que seleccionar Any CPU y eliminarla de la lista. Presionamos aceptar y seleccionamos x86 por defecto como la plataforma de la solución. Si no vamos a usar en ningún momento el emulador, podemos establecer ARM como plataforma por defecto.

En la barra de botones standard, podemos añadir el combo de plataforma al lado del de configuración, así podremos cambiar fácilmente entre ARM y x86. Ahora tenemos que editar el archivo csproj de nuestro proyecto para que las librerías tengan en cuenta la plataforma activa. Para ello lo primero que necesitamos hacer es descargar el proyecto de Visual Studio. Hacemos click derecho sobre el proyecto en el explorador de soluciones y escogemos la opción “Unload Project”.

NOTA: EL PASO A CONTINUACIÓN NO ES NECESARIO DESDE LA VERSIÓN 0.9.2 DEL SDK, DONDE HAN INCLUIDO UN ARCHIVO .TARGETS QUE REALIZA ESTA ACCIÓN POR NOSOTROS.

A continuación, volvemos a hacer botón derecho sobre el proyecto y seleccionamos “Edit xxxx.csproj”. Con esto veremos el archivo XML que compone nuestro proyecto. Buscamos el ItemGroup que contiene las librerías de Nokia:

Librerías Imaging SDK original
<ItemGroup>
  <Reference Include="Nokia.Graphics.Imaging, Version=255.255.255.255, Culture=neutral, processorArchitecture=MSIL">
    <HintPath>..\packages\NokiaImagingSDK.0.9.1\lib\wp8\X86\Nokia.Graphics.Imaging.winmd</HintPath>
  </Reference>
  <Reference Include="Nokia.Graphics.Imaging.Managed">
    <HintPath>..\packages\NokiaImagingSDK.0.9.1\lib\wp8\Nokia.Graphics.Imaging.Managed.dll</HintPath>
  </Reference>
  <Reference Include="Nokia.InteropServices.WindowsRuntime">
    <HintPath>..\packages\NokiaImagingSDK.0.9.1\lib\wp8\X86\Nokia.InteropServices.WindowsRuntime.winmd</HintPath>
  </Reference>
</ItemGroup>

Como podemos observar, Nokia.Graphics.Imaging.winmd y Nokia.InteropServices.WindowsRuntime.winmd están en un subdirectorio llamado X86. Si consultamos el directorio del paquete de NuGet, veremos que también existe un directorio ARM. Bien, pues como los directorios se llaman igual que nuestras plataformas posibles, vamos a hacer que usen la plataforma activa para esa parte de la ruta:

Librerías Imaging SDK nuevas
<ItemGroup>
  <Reference Include="Nokia.Graphics.Imaging, Version=255.255.255.255, Culture=neutral, processorArchitecture=MSIL">
    <HintPath>..\packages\NokiaImagingSDK.0.9.1\lib\wp8\$(Platform)\Nokia.Graphics.Imaging.winmd</HintPath>
  </Reference>
  <Reference Include="Nokia.Graphics.Imaging.Managed">
    <HintPath>..\packages\NokiaImagingSDK.0.9.1\lib\wp8\Nokia.Graphics.Imaging.Managed.dll</HintPath>
  </Reference>
  <Reference Include="Nokia.InteropServices.WindowsRuntime">
    <HintPath>..\packages\NokiaImagingSDK.0.9.1\lib\wp8\$(Platform)\Nokia.InteropServices.WindowsRuntime.winmd</HintPath>
  </Reference>
</ItemGroup>

Ahora solo tenemos que guardar el archivo y hacer click derecho sobre el proyecto, seleccionando la opción “Reload Project”. Una vez que el proyecto esté cargado de nuevo, podremos seleccionar la plataforma x86 y ejecutar el emulador sin ningún error o seleccionar ARM y ejecutar en el dispositivo.

Con este simple paso, solo tendremos que seleccionar la plataforma que necesitemos en cada momento y nuestra aplicación funcionará correctamente sin tener que eliminar/añadir constantemente las referencias.

Y hasta aquí llega esta primera introducción al nuevo Imaging SDK de Nokia. En próximos artículos entraremos a trabajar con cada opción que nos ofrece y veremos como integrar cada una de ellas correctamente usando el patrón MVVM.

Para que vayáis haciendo boca, os dejo este proyecto vacío con los componentes bien configurados, para que lo tengáis como base.

Un saludo y Happy Coding!

Published 16/7/2013 8:09 por Josué Yeray Julián Ferreiro
Comparte este post:

Comentarios

# [Windows Phone 8] Nokia Imaging SDK 2: Editando imágenes

Monday, July 22, 2013 10:05 AM por Josue Yeray

Hola a todos! Continuamos la serie de artículos sobre el SDK de trabajo con imágenes publicado

# [Windows Phone 8] Nokia Imaging SDK 3: Aplicando filtros a imágenes

Monday, August 19, 2013 10:15 AM por Josue Yeray

Hola a todos de nuevo. Vamos a comenzar con la tercera entrega de esta serie de artículos, en