;(function() { window.createMeasureObserver = (measureName) => { var markPrefix = `_uol-measure-${measureName}-${new Date().getTime()}`; performance.mark(`${markPrefix}-start`); return { end: function() { performance.mark(`${markPrefix}-end`); performance.measure(`uol-measure-${measureName}`, `${markPrefix}-start`, `${markPrefix}-end`); performance.clearMarks(`${markPrefix}-start`); performance.clearMarks(`${markPrefix}-end`); } } }; /** * Gerenciador de eventos */ window.gevent = { stack: [], RUN_ONCE: true, on: function(name, callback, once) { this.stack.push([name, callback, !!once]); }, emit: function(name, args) { for (var i = this.stack.length, item; i--;) { item = this.stack[i]; if (item[0] === name) { item[1](args); if (item[2]) { this.stack.splice(i, 1); } } } } }; var runningSearch = false; var hadAnEvent = true; var elementsToWatch = window.elementsToWatch = new Map(); var innerHeight = window.innerHeight; // timestamp da última rodada do requestAnimationFrame // É usado para limitar a procura por elementos visíveis. var lastAnimationTS = 0; // verifica se elemento está no viewport do usuário var isElementInViewport = function(el) { var rect = el.getBoundingClientRect(); var clientHeight = window.innerHeight || document.documentElement.clientHeight; // renderizando antes, evitando troca de conteúdo visível no chartbeat-related-content if(el.className.includes('related-content-front')) return true; // garante que usa ao mínimo 280px de margem para fazer o lazyload var margin = clientHeight + Math.max(280, clientHeight * 0.2); // se a base do componente está acima da altura da tela do usuário, está oculto if(rect.bottom < 0 && rect.bottom > margin * -1) { return false; } // se o topo do elemento está abaixo da altura da tela do usuário, está oculto if(rect.top > margin) { return false; } // se a posição do topo é negativa, verifica se a altura dele ainda // compensa o que já foi scrollado if(rect.top < 0 && rect.height + rect.top < 0) { return false; } return true; }; var asynxNextFreeTime = () => { return new Promise((resolve) => { if(window.requestIdleCallback) { window.requestIdleCallback(resolve, { timeout: 5000, }); } else { window.requestAnimationFrame(resolve); } }); }; var asyncValidateIfElIsInViewPort = function(promise, el) { return promise.then(() => { if(el) { if(isElementInViewport(el) == true) { const cb = elementsToWatch.get(el); // remove da lista para não ser disparado novamente elementsToWatch.delete(el); cb(); } } }).then(asynxNextFreeTime); }; // inicia o fluxo de procura de elementos procurados var look = function() { if(window.requestIdleCallback) { window.requestIdleCallback(findByVisibleElements, { timeout: 5000, }); } else { window.requestAnimationFrame(findByVisibleElements); } }; var findByVisibleElements = function(ts) { var elapsedSinceLast = ts - lastAnimationTS; // se não teve nenhum evento que possa alterar a página if(hadAnEvent == false) { return look(); } if(elementsToWatch.size == 0) { return look(); } if(runningSearch == true) { return look(); } // procura por elementos visíveis apenas 5x/seg if(elapsedSinceLast < 1000/5) { return look(); } // atualiza o último ts lastAnimationTS = ts; // reseta status de scroll para não entrar novamente aqui hadAnEvent = false; // indica que está rodando a procura por elementos no viewport runningSearch = true; const done = Array.from(elementsToWatch.keys()).reduce(asyncValidateIfElIsInViewPort, Promise.resolve()); // obtém todos os elementos que podem ter view contabilizados //elementsToWatch.forEach(function(cb, el) { // if(isElementInViewport(el) == true) { // // remove da lista para não ser disparado novamente // elementsToWatch.delete(el); // cb(el); // } //}); done.then(function() { runningSearch = false; }); // reinicia o fluxo de procura look(); }; /** * Quando o elemento `el` entrar no viewport (-20%), cb será disparado. */ window.lazyload = function(el, cb) { if(el.nodeType != Node.ELEMENT_NODE) { throw new Error("element parameter should be a Element Node"); } if(typeof cb !== 'function') { throw new Error("callback parameter should be a Function"); } elementsToWatch.set(el, cb); } var setEvent = function() { hadAnEvent = true; }; window.addEventListener('scroll', setEvent, { capture: true, ive: true }); window.addEventListener('click', setEvent, { ive: true }); window.addEventListener('resize', setEvent, { ive: true }); window.addEventListener('load', setEvent, { once: true, ive: true }); window.addEventListener('DOMContentLoaded', setEvent, { once: true, ive: true }); window.gevent.on('allJSLoadedAndCreated', setEvent, window.gevent.RUN_ONCE); // inicia a validação look(); })();
  • AssineUOL
Topo

Stickers no WhatsApp: veja os melhores apps para criar as suas figurinhas

Essa é para quem não quer mais depender só dos stickers enviados pelos amigos - Reprodução
Essa é para quem não quer mais depender só dos stickers enviados pelos amigos Imagem: Reprodução

Laura Martins

Colaboração para Tilt, em São Paulo

12/01/2020 04h00

Vamos ser sinceros aqui: você é do time que só se comunica com figurinhas no WhatsApp ou é do grupo que acha que o brasileiro não tem limites? Depois da febre dos GIFs, os stickers aram a reinar em vários grupos do zap. Cachorrinhos, crianças, políticos, cantores, músicos... e até o rosto de amigos. Tudo é motivo agora.

Inspirados nisso, trazemos no "Baixe estes Apps" de hoje uma lista para quem não quer mais depender só dos stickers enviados pelos amigos. Vários aplicativos já ajudam na tarefa de criar a figurinha perfeita.

Confiram alguns apps que separamos para você:

Personal Sticker Maker

Personal Sticker Make: Stickers no WhatsApp - Reprodução - Reprodução
Imagem: Reprodução

Para mim, foi o melhor aplicativo para apagar o fundo de uma foto. Ele permite dar zoom na imagem e escolher o tamanho da borracha (usada para apagar o fundo), deixando o app mais preciso. O programa é bastante intuitivo e não é difícil editar as imagens.

Dá para colocar adesivos decorados junto com a foto, acrescentar textos e emojis. Outra coisa que achei legal é que você pode apenas editar a foto tirando o fundo e salvar em JPEG. E não somente na extensão do sticker para WhatsApp.

No entanto, o aplicativo segue uma regra de exigir a criação de um pacote de stickers. Então, obriga a criar três figurinhas para liberar o compartilhamento.

  • Gratuito (com opção paga)
  • Disponível para Android

WSTick App

WStick App: Stickers no WhatsApp - Reprodução - Reprodução
Imagem: Reprodução

Gostei bastante do aplicativo para transformar uma foto em uma figurinha. Além de ser bastante intuitivo, ele é bem fácil de cortar os detalhes da imagem. Dá para apagar o fundo da foto facilmente. Por outro lado, achei que ele não tem opções de fontes de letras tão diferentes para usar nos stickers.

  • Gratuito (com opção paga)
  • Disponível para iOS e Android

Sticker.LY

Sticker.LY - Stickers no WhatsApp - Reprodução - Reprodução
Imagem: Reprodução

Também é bastante prático para editar fotos. Assim que baixei consegui facilmente colocar a criatividade para funcionar. O programa é bem simples. Você pode criar stickers de amor, misturar memes, fazer alguns só com frases, outros usando quadrinhos. Ele também possui o recurso de limpar o fundo para deixar o rosto de pessoa ou animal em destaque.

Achei ruim a parte de que, ao salvar a figurinha, o aplicativo não deixa voltar para editar a foto novamente. Outro ponto negativo é que o app também trabalha com um formato de pacote de stickers (ao menos três figurinhas para conseguir compartilhar).

  • Gratuito (com opção paga)
  • Disponível para iOS e Android

Sticker Studio

Sticker Studio: Stickers no WhatsApp - Reprodução - Reprodução
Imagem: Reprodução

Funciona bem parecido com os programas acima. Mas o diferencial é que ele trabalha com alguns formatos de recortes de fotos padrão, como triângulo, círculo e quadrado. Na versão pro (a paga), o usuário pode escolher estrela ou coração também.

No caso da edição à mão livre, eu não achei lá muito preciso. As bordas da imagem não ficam com aquele aspecto mais clean.

  • Gratuito (com opção paga)
  • Disponível para Android

Bônus

As lojas de aplicativos para smartphones estão repletas de programas para a criação de stickers. Como muitos funcionam de forma parecida, separei aqui uma lista bônus para os amantes das figurinhas se arriscante nos testes de criatividade:

Sticker Maker

Text Sticker

Criador de Figurinhas para WhatsApp

Sticker Maker Criar Figurinhas

SIGA TILT NAS REDES SOCIAIS