Posts Tagged ‘file’

Lab Go2Images resize e crop de imagens no formato gif, png ou jpg

Postado em 19 mai 2009
Categoria(s) Lab, PHP

Frequentemente em muitos projetos PHP é necessário trabalhar com o upload de imagens, geralmente nos formatos gif, png ou jpg.

Em muitas aplicações sempre é necessário fazer o resize e o crop das imagens, para obter um melhor resultado na visualização das imagens juntamente com o conteúdo.

Pensando nisso recentemente eu criei um projeto, chamado Go2Images, no meu laboratório, com o objetivo de realizar as funcionalidades acima.

Go2Images

O código fonte está disponível no github: http://github.com/patrickespake/go2images/tree/master e você pode testar no endereço: http://lab.patrickespake.com/go2images/.

O Go2Images foi desenvolvido usando a linguagem de programação PHP e o padrão de projeto MVC, que foi implementado do zero. Além disso ele usa a biblioteca GD para realizar as operações de resize e crop.

Você pode definir os tamanhos que as imagens devem ser redimensionadas, cadastrando a largura e altura, os sistema verifica todos os tipos de tamanhos cadastrados e usa essas informações para efetuar o resize e crop da imagens, conforme: http://lab.patrickespake.com/go2images/?controller=imageType&action=list e imagem abaixo:

Go2Images Image Type

Desta forma é possível inserir novas dimensões facilmente.

Com as dimensões de redimensionamento definidas, é possível efetuar o upload de uma imagem em: http://lab.patrickespake.com/go2images/index.php?controller=image&action=new.

Go2Images Nova Imagem

Automaticamente o sistema irá fazer o resize e crop das imagens, baseado nas informações de tamanho cadastradas http://lab.patrickespake.com/go2images/index.php?controller=image&action=show&id=1.

Go2Images Detalhes da Imagem

Primeiro o sistema efetua o resize da imagem tentando chegar o mais perto das dimensões desejadas e depois efetua o crop para deixar a imagem exatamente no tamanho informado.

No diretório public/images/system são armazenadas as imagens, é criado um diretório para cada imagem cadastrada, e dentro de cada diretório os tamanhos das imagens, sempre é armazenada a imagem original para futuros redimensionamentos.

Esse projeto é apenas um protótipo, sinta-se livre para usar, copiar e modificar.

  • Share/Bookmark

Ruby on Rails como usar callbacks do plugin Paperclip

Postado em 20 abr 2009
Categoria(s) Ruby on Rails

No plugin Paperclip existem dois callbacks que podem ser usados no model.

O primeiro é o before_column_post_process usado antes de salvar e o segundo after_column_post_process usado depois de salvar.

Onde aparece column troque pelo nome da sua coluna do anexo.

Por exemplo, a minha coluna se chama file, logo os nomes dos métodos ficam before_file_post_process e after_file_post_process:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class Image < ActiveRecord::Base
  has_attached_file :file,
                    :styles => {:large => '600x600>', :medium => '300x300>', :small => '150x150>', :thumb => '50x50>'},
                    :path => ":rails_root/public/images/:id/:style_:basename.:extension",
                    :url => "/images/:id/:style_:basename.:extension"
  validates_attachment_presence :file
  validates_attachment_content_type :file, :content_type => ['image/jpeg', 'image/png', 'image/gif']
  before_file_post_process :post_before_process_file
  after_file_post_process :post_after_process_file
 
  def post_before_process_file
    raise "Executado antes de salvar"
  end
 
  def post_after_process_file
    raise "Executado depois de salvar"
  end
end

Você pode usar esses callbacks para fazer algum tratamento adicional nos anexos.

Se você gostou desse texto e acha que ajudou você, me recomende: Recommend Me.

  • Share/Bookmark

Como definir campos obrigatórios no symfony usando Validation File

Postado em 25 ago 2008
Categoria(s) Symfony

É necessário implementar um arquivo validação com o mesmo nome da action dentro do diretório validate do módulo.

Por exemplo, edit.yml.

Digamos que o formulário tenha os campos nome e data, e eles devem ser de preenchimento obrigatório.

Deve ficar da seguinte forma o arquivo edit.yml:

1
2
3
4
5
6
7
8
9
10
11
12
methods: [post]
 
fillin:
  enabled: true
 
fields:
  nome:
    required:
      msg: Campo nome é obrigatório.
  data:
    required:
      msg: Campo data é obrigatório.

O atributo fillin define se os campos devem retornados preenchidos se ocorrer erro de validação.

  • Share/Bookmark