Ferramentas · No ar
Print2Link
Cole o print, marque e mande o link.
Cole um print, desenhe setas e borrões e receba um link curto que some em 24 horas. O que você borra nunca sobe para o servidor.
Sobre o projeto
O que é o Print2Link
O Print2Link é para quando um print resolve a conversa, mas precisa de um toque antes de sair: uma seta mostrando onde clicar, um borrão em cima do e-mail do cliente. Você cola a imagem (Ctrl+V), arrasta um arquivo ou escolhe um, marca na própria tela e recebe um link curto para mandar. Sem conta e sem programa instalado.
As marcações são feitas no seu navegador, em um canvas, e o que sobe é a imagem já pronta: o borrão é aplicado nos pixels antes do envio, então o original não vai junto. Há setas, retângulos (contorno, marca-texto ou tarja sólida), textos e dois jeitos de esconder uma área, o borrão e o mosaico. Dá para desfazer, refazer e apagar tudo.
O link some em 24 horas. Quem abre vê o print, um contador regressivo e quantas vezes ele foi aberto e baixado, e a prévia do link nos aplicativos de mensagem já mostra o próprio print. Quem enviou pode apagar antes, pelo histórico, que fica só no navegador.
Por baixo, o Print2Link usa a mesma base do ShareSoFast: o mesmo banco SQLite em modo WAL (a imagem fica numa coluna BLOB), a mesma fila que executa uma operação por vez, o mesmo teto de disco e a mesma limpeza que apaga de verdade. Só as tabelas são próprias. Os detalhes estão em Tecnologias, logo abaixo.
Recursos
O que o Print2Link faz
Cole, arraste ou escolha
Ctrl+V (ou ⌘+V) com o print copiado, arraste uma imagem para a tela ou escolha um arquivo. Prints maiores que 4096 px no lado maior são reduzidos ao abrir.
Seta, retângulo e texto
Setas com cor e espessura, retângulos de contorno, de marca-texto ou de tarja sólida, e texto. Seis cores prontas, e a tecla Shift trava a seta em ângulos de 45°.
Borrão que apaga de verdade
O borrão (ou o mosaico) é feito nos pixels antes do envio e substitui o que estava embaixo: o original não sobe. Para dado muito sensível, a tarja sólida é a opção mais segura.
Desfazer, refazer e atalhos
Até 100 passos de desfazer e refazer, apagar tudo (que também se desfaz), zoom para caber na tela ou tamanho real e teclas para as ferramentas (A, B, R e T).
Some em 24 horas
Cada link vence depois de um dia e uma limpeza automática apaga a imagem de verdade. Dá para apagar antes, pelo histórico, com um clique de confirmação.
Link, imagem, Markdown e HTML
Copie o link da página, o endereço da imagem crua, o Markdown ou o HTML para colar num chat, num issue ou num documento.
Prévia no chat
O link mostra o próprio print na prévia dos aplicativos de mensagem (Open Graph). Os robôs que montam a prévia não entram na conta de visualizações.
Visualizações e downloads
Quem abre o link vê quantas vezes o print foi aberto e baixado. Quem enviou acompanha os mesmos números no histórico.
Números abertos
A tela inicial mostra prints criados, visualizações, downloads, bytes enviados, setas e borrões, apagados antes da hora, vencidos, pedidos barrados e o maior print, e se atualiza sozinha. São só contagens de todo o período, em uma tabela que só aumenta: nunca o conteúdo de um print.
Tecnologias
Por dentro do Print2Link
Mesma base do ShareSoFast
O Print2Link não abre um banco próprio: usa o arquivo, a conexão e a fila do ShareSoFast. As tabelas são dele (a imagem fica numa coluna BLOB, por último) e os contadores moram na tabela de números que só aumenta, com um prefixo. Os dois apps juntos não disputam trava do SQLite, dividem o mesmo teto de disco e a mesma limpeza.
Fila com concorrência 1
Toda operação no banco entra na fila (p-queue) do ShareSoFast e executa uma por vez. Se ela encher, o servidor responde 503 em vez de travar. Um teste lança operações dos dois apps ao mesmo tempo e confere que nunca há duas rodando juntas.
Borrão sem volta
Primeiro um mosaico (cada célula vira a média das suas cores), depois um desfoque só para suavizar as bordas. O resultado depende apenas das médias, e um teste prova: duas imagens diferentes por dentro, com a mesma média por célula, ficam idênticas depois. Não usa o filtro do canvas, que o Safari não tem.
Canvas em duas camadas
A imagem com as marcações fica num canvas e a marcação em andamento, em outro por cima. Desfazer refaz tudo do zero a partir de uma lista de marcações (o borrão guarda o pedaço pronto), e é essa lista, um módulo puro, que o teste confere no Node.
Módulos ES puros
Geometria da seta, documento com desfazer, borrão, formatos e histórico não tocam em tela. O navegador e os testes importam os mesmos arquivos, e o importmap leva a versão para cada módulo.
Imagem conferida pelos bytes
O servidor lê o cabeçalho de PNG, JPEG e WebP (o tamanho vem dele) e recusa arquivo cortado, animado, grande demais ou que nem seja imagem. O tipo que o navegador declara não vale nada. A resposta sai com nosniff e uma política de segurança que impede qualquer execução.
Envio binário com progresso real
O navegador manda a imagem como binário puro, com XMLHttpRequest, e mede o envio de verdade. As contagens do editor viajam num header opcional, então até um curl com a imagem funciona.
Prévia do link e cache esperto
A página do link declara o próprio print como imagem de prévia. A imagem sai com ETag e responde 304 a quem só quer conferir, sem ler o BLOB nem contar visualização.
Token de apagar e limites por IP
Quem envia recebe um token uma vez só (o servidor guarda apenas o hash). Envios por minuto e por hora, links que não existem e chutes de token têm limite por IP, conferido antes de o servidor ler o corpo.
Números abertos que só aumentam
Cada fato é contado na mesma transação que o grava (o print entra e o número sobe juntos, ou nenhum dos dois), numa tabela com triggers do SQLite que recusam diminuir e apagar. Pedidos barrados ficam em memória e vão ao banco uma vez por minuto. A tela os mostra pela seção compartilhada do portfólio e se atualiza sozinha.
Som e movimento em cada ação
Cada clique tem som e animação por um módulo comum que usa os sons de interface do SFX Forge, com botões para desligar os dois, respeito ao pedido de menos movimento do sistema e teto de 24 partículas de confete.
FAQ
Perguntas frequentes
Preciso criar uma conta?
Não. O histórico dos seus prints fica só no navegador que você usou. Se limpar os dados do navegador, a lista some, mas o link continua valendo até vencer.
O que sobe para o servidor?
Só a imagem pronta, com as marcações e o borrão já aplicados nos pixels. O arquivo que você colou nunca é enviado, e os metadados da foto (como EXIF) ficam de fora, porque a imagem é gerada de novo no navegador.
O borrão serve para esconder senhas e dados pessoais?
O borrão e o mosaico destroem o que estava embaixo e não há como desfazê-los. Mesmo assim, para senhas, chaves e dados muito sensíveis a opção mais segura é a tarja sólida, que cobre com uma cor chapada. E lembre que o link é público para quem o tiver.
Quanto tempo o link dura?
24 horas. Passado esse tempo a imagem é apagada do banco, o espaço é devolvido e o log de escrita do SQLite é truncado. Dá para apagar antes pelo histórico, no mesmo navegador em que você enviou.
Qual o tamanho máximo?
O servidor aceita até 10 MB por imagem (PNG, JPEG ou WebP, com no máximo 8192 px de lado). O editor reduz o print para 4096 px no lado maior e, se o PNG passar de uns 4 MB, tenta WebP.
Alguém consegue adivinhar o meu link?
É improvável: são 8 caracteres sorteados (cerca de 46 bits), as tentativas em links que não existem são limitadas e a página não é indexada por buscadores. Mesmo assim, quem tiver o link consegue ver, então só mande a quem deve ver.
Funciona no celular?
A tela se adapta a telas pequenas e desenha por toque. No celular não há Ctrl+V: use Escolher imagem ou o botão de colar. Foi conferida em uma tela de celular simulada, não em um aparelho de verdade.
Dá para usar sem a página, por exemplo com o curl?
Dá. Mande a imagem como binário (application/octet-stream) para /projetos/print2link/api/upload. A resposta traz o link, o endereço da imagem e o token para apagar.
Por que usa o mesmo banco do ShareSoFast?
É a ideia do projeto: reaproveitar a base que já existia (SQLite em WAL, imagem em BLOB, fila de concorrência 1, teto de disco e limpeza) em vez de montar outra. Só as tabelas são separadas, para um app não mexer nos dados do outro.
O que os números abertos contam? Eles guardam dados pessoais?
Só contagens: prints criados, visualizações, downloads, bytes, setas e borrões, apagados antes da hora, vencidos, pedidos barrados e o maior print. Nada do conteúdo de um print, nenhum IP e nenhum nome entra nessa tabela, e o total continua mesmo depois que os prints somem. As contagens de setas e borrões viajam num aviso anônimo junto do envio, que o navegador não manda quando você pede para não ser rastreado (DNT ou Global Privacy Control).
Como são contadas as visualizações e os downloads?
Uma visualização por visitante a cada 30 minutos, ao abrir a página ou a imagem. Os robôs que montam a prévia do link em aplicativos de mensagem não entram na conta. Cada download pelo botão Baixar conta uma vez.
Gostou do Print2Link? Dá para apoiar o trabalho: Me pague um café
Continue explorando
Veja também
Mercado Helper
Listas de compras para usar no celular: marque o que foi para o carrinho, veja o total e consulte o histórico.
Ver projeto No arShareSoFast
Compartilhe um arquivo de até 25 MB por um link curto, com senha e uma carta opcional. Depois de 1 dia, tudo é apagado de verdade.
Ver projeto No arRec2Link
Grave a tela, o áudio, os dois ou só a webcam direto no navegador. O arquivo é comprimido aí mesmo, ganha um link curto e é apagado sozinho em 24 horas.
Ver projeto