SlideShare a Scribd company logo
1 of 56
Download to read offline
Mágica com
Manipulação de Imagens




30 de Outubro   The Developers Conference 2011   1
Alexandre Gomes Gaigalas
http://about.me/alganet




30 de Outubro             The Developers Conference 2011   2
Hoje você vai ver...


 ●
     O que são ImageMagick e Imagick

 ●
     Operações comuns com imagens

 ●
     Operações mágicas com imagens!



30 de Outubro       The Developers Conference 2011   3
ImageMagick
 ●
     “Photoshop via API”
 ●
     PHP, Perl, Java, Python, Ruby, etc...
 ●
     Centenas de formatos de imagens




30 de Outubro       The Developers Conference 2011   4
Imagick
 ●
     Extensão PHP para o ImageMagick

 ●
     ImageMagick != Imagick

 ●
     Orientada a objetos

 ●
     pecl install imagick

30 de Outubro        The Developers Conference 2011   5
O Básico
30 de Outubro   The Developers Conference 2011   6
30 de Outubro   The Developers Conference 2011   7
Redimensionamento
30 de Outubro       The Developers Conference 2011   8
30 de Outubro   The Developers Conference 2011   9
Miniaturas
30 de Outubro   The Developers Conference 2011   10
Preservação de Aspecto




30 de Outubro         The Developers Conference 2011   11
Cortando Imagens
30 de Outubro      The Developers Conference 2011   12
30 de Outubro   The Developers Conference 2011   13
Miniatura com cortes
30 de Outubro        The Developers Conference 2011   14
30 de Outubro   The Developers Conference 2011   15
Redimensionamento Líquido
30 de Outubro    The Developers Conference 2011   16
30 de Outubro   The Developers Conference 2011   17
Bordas Arredondadas
30 de Outubro       The Developers Conference 2011   18
30 de Outubro   The Developers Conference 2011   19
Sombra
30 de Outubro   The Developers Conference 2011   20
30 de Outubro   The Developers Conference 2011   21
Texto na Imagem
30 de Outubro     The Developers Conference 2011   22
30 de Outubro   The Developers Conference 2011   23
Marca D'água
30 de Outubro    The Developers Conference 2011   24
30 de Outubro   The Developers Conference 2011   25
Transparência em Imagens
30 de Outubro          The Developers Conference 2011   26
30 de Outubro   The Developers Conference 2011   27
Animação de GIFs
30 de Outubro      The Developers Conference 2011   28
Essa imagem é um GIF animado e talvez não funcione em todos os sistemas de slides.
30 de Outubro                 The Developers Conference 2011                         29
Blur
30 de Outubro   The Developers Conference 2011   30
30 de Outubro   The Developers Conference 2011   31
Carvão
30 de Outubro   The Developers Conference 2011   32
30 de Outubro   The Developers Conference 2011   33
Bordas
30 de Outubro   The Developers Conference 2011   34
30 de Outubro   The Developers Conference 2011   35
Polaroid
30 de Outubro   The Developers Conference 2011   36
30 de Outubro   The Developers Conference 2011   37
Sepia
30 de Outubro   The Developers Conference 2011   38
30 de Outubro   The Developers Conference 2011   39
Vignette
30 de Outubro   The Developers Conference 2011   40
30 de Outubro   The Developers Conference 2011   41
Pintura a Óleo
30 de Outubro    The Developers Conference 2011   42
30 de Outubro   The Developers Conference 2011   43
Lendo PDFs
30 de Outubro   The Developers Conference 2011   44
30 de Outubro   The Developers Conference 2011   45
Trim em Imagens
30 de Outubro     The Developers Conference 2011   46
30 de Outubro   The Developers Conference 2011   47
Montagens
30 de Outubro   The Developers Conference 2011   48
30 de Outubro   The Developers Conference 2011   49
Extraíndo quadros de vídeos
30 de Outubro     The Developers Conference 2011   50
30 de Outubro   The Developers Conference 2011   51
Limitando Memória
30 de Outubro      The Developers Conference 2011   52
[exif:MaxApertureValue] => 3/1
  [exif:MeteringMode] => 5
  [exif:Model] => KODAK EASYSHARE V803 ZOOM DIGITAL CAMERA
  [exif:Orientation] => 1
  [exif:ResolutionUnit] => 2
  [exif:Saturation] => 0
  [exif:SceneCaptureType] => 0
  [exif:SceneType] => 1
  [exif:SensingMethod] => 2
  [exif:Sharpness] => 0
  [exif:ShutterSpeedValue] => 966/100




                Obtendo Metadados
30 de Outubro        The Developers Conference 2011          53
Hoje você viu...
 ●
     O que são ImageMagick e Imagick

 ●
     Operações comuns com imagens

 ●
     Operações mágicas com imagens!




30 de Outubro     The Developers Conference 2011   54
Perguntas?




30 de Outubro   The Developers Conference 2011   55
Obrigado!




30 de Outubro   The Developers Conference 2011   56

More Related Content

More from Alexandre Gaigalas

Domine Validação de Dados em 45min
Domine Validação de Dados em 45minDomine Validação de Dados em 45min
Domine Validação de Dados em 45minAlexandre Gaigalas
 
REST: Faça o Serviço Direito
REST: Faça o Serviço DireitoREST: Faça o Serviço Direito
REST: Faça o Serviço DireitoAlexandre Gaigalas
 
REST: Faça o Serviço Direito - TDC Goiânia
REST: Faça o Serviço Direito - TDC GoiâniaREST: Faça o Serviço Direito - TDC Goiânia
REST: Faça o Serviço Direito - TDC GoiâniaAlexandre Gaigalas
 
Autoloaders Universais + Microframeworks em PHP - Trilha de PHP do TDC 2011
Autoloaders Universais + Microframeworks em PHP - Trilha de PHP do TDC 2011Autoloaders Universais + Microframeworks em PHP - Trilha de PHP do TDC 2011
Autoloaders Universais + Microframeworks em PHP - Trilha de PHP do TDC 2011Alexandre Gaigalas
 
HTTP: A Base do Desenvolvimento Web - FISL 12
HTTP: A Base do Desenvolvimento Web - FISL 12HTTP: A Base do Desenvolvimento Web - FISL 12
HTTP: A Base do Desenvolvimento Web - FISL 12Alexandre Gaigalas
 
Varrendo APIs REST em Larga Escala utilizando PHP
Varrendo APIs REST em Larga Escala utilizando PHPVarrendo APIs REST em Larga Escala utilizando PHP
Varrendo APIs REST em Larga Escala utilizando PHPAlexandre Gaigalas
 

More from Alexandre Gaigalas (9)

Domine Validação de Dados em 45min
Domine Validação de Dados em 45minDomine Validação de Dados em 45min
Domine Validação de Dados em 45min
 
REST: Faça o Serviço Direito
REST: Faça o Serviço DireitoREST: Faça o Serviço Direito
REST: Faça o Serviço Direito
 
As Mudanças Culturais do PHP
As Mudanças Culturais do PHPAs Mudanças Culturais do PHP
As Mudanças Culturais do PHP
 
PHP Maroto
PHP MarotoPHP Maroto
PHP Maroto
 
REST: Faça o Serviço Direito - TDC Goiânia
REST: Faça o Serviço Direito - TDC GoiâniaREST: Faça o Serviço Direito - TDC Goiânia
REST: Faça o Serviço Direito - TDC Goiânia
 
Autoloaders Universais + Microframeworks em PHP - Trilha de PHP do TDC 2011
Autoloaders Universais + Microframeworks em PHP - Trilha de PHP do TDC 2011Autoloaders Universais + Microframeworks em PHP - Trilha de PHP do TDC 2011
Autoloaders Universais + Microframeworks em PHP - Trilha de PHP do TDC 2011
 
HTTP: A Base do Desenvolvimento Web - FISL 12
HTTP: A Base do Desenvolvimento Web - FISL 12HTTP: A Base do Desenvolvimento Web - FISL 12
HTTP: A Base do Desenvolvimento Web - FISL 12
 
GET /conceitos HTTP/1.1
GET /conceitos HTTP/1.1GET /conceitos HTTP/1.1
GET /conceitos HTTP/1.1
 
Varrendo APIs REST em Larga Escala utilizando PHP
Varrendo APIs REST em Larga Escala utilizando PHPVarrendo APIs REST em Larga Escala utilizando PHP
Varrendo APIs REST em Larga Escala utilizando PHP
 

Manipulação imagens ImageMagick

Editor's Notes

  1. Autoloading no PHP é um mecanismo para que o carregamento de dependências entre as classes seja resolvido automaticamente. Classes no PHP muitas vezes extendem outras classes, implementam outras interfaces e interagem com outros objetos. Nem sempre as declarações dessas classes estão no mesmo arquivo, e nem é recomendado que estejam. Pode parecer estranho que a maneira de tratar dependências entre classes seja tão flexível e permita que tantas maneiras diferentes de organização surjam, mas isso é consistente com a forma que o PHP trabalha com inclusões desde o começo. Permitir que classes existam em uma estrutura não-fixa, mais de uma por arquivo, em arquivos sem padrão específico de nomenclatura ou localização no sistema de arquivos é uma vantagem que permitiu que sistemas antes projetados para o paradigma procedural pudessem beneficiar-se de bibliotecas e componentes orientados a objetos em futuras atualizações. Mas a flexibilização das dependências entre classes também tem desvantagens. Existem casos nos quais é desejável que haja uma convenção na estrutura para que classes possam ser encontradas facilmente tanto pelo programador quanto pelo sistema. O mecanismo de autoload do PHP funciona como um evento que é disparado sempre que uma classe não é encontrada no sistema. Durante a execução desse evento, o programador pode definir uma rotina que inclui ou define classes dinamicamente. Se a estrutura de arquivos na qual essas classes encontram-se for organizada, esse processo pode ser simplificado. A primeira organização notável de autoloading no PHP talvez tenha se originado no projeto PEAR, que influenciou os projetos Zend Framework e Solar Framework nesse aspecto. Em sua organização, há uma correspondência entre os nomes das classes e os diretórios nos quais elas se encontram. Com base nesse padrão de facto, o PHP Standards Group, que é um grupo de desenvolvedores de projetos open source em PHP, reuniu-se e especificou o padrão de carregamento de classes sob a especificação PSR-0, que possui também uma implementação de referência.
  2. Autoloading no PHP é um mecanismo para que o carregamento de dependências entre as classes seja resolvido automaticamente. Classes no PHP muitas vezes extendem outras classes, implementam outras interfaces e interagem com outros objetos. Nem sempre as declarações dessas classes estão no mesmo arquivo, e nem é recomendado que estejam. Pode parecer estranho que a maneira de tratar dependências entre classes seja tão flexível e permita que tantas maneiras diferentes de organização surjam, mas isso é consistente com a forma que o PHP trabalha com inclusões desde o começo. Permitir que classes existam em uma estrutura não-fixa, mais de uma por arquivo, em arquivos sem padrão específico de nomenclatura ou localização no sistema de arquivos é uma vantagem que permitiu que sistemas antes projetados para o paradigma procedural pudessem beneficiar-se de bibliotecas e componentes orientados a objetos em futuras atualizações. Mas a flexibilização das dependências entre classes também tem desvantagens. Existem casos nos quais é desejável que haja uma convenção na estrutura para que classes possam ser encontradas facilmente tanto pelo programador quanto pelo sistema. O mecanismo de autoload do PHP funciona como um evento que é disparado sempre que uma classe não é encontrada no sistema. Durante a execução desse evento, o programador pode definir uma rotina que inclui ou define classes dinamicamente. Se a estrutura de arquivos na qual essas classes encontram-se for organizada, esse processo pode ser simplificado. A primeira organização notável de autoloading no PHP talvez tenha se originado no projeto PEAR, que influenciou os projetos Zend Framework e Solar Framework nesse aspecto. Em sua organização, há uma correspondência entre os nomes das classes e os diretórios nos quais elas se encontram. Com base nesse padrão de facto, o PHP Standards Group, que é um grupo de desenvolvedores de projetos open source em PHP, reuniu-se e especificou o padrão de carregamento de classes sob a especificação PSR-0, que possui também uma implementação de referência.