bom pessoal estou fazendo um programa que salva uma imagem de uma url especifica, só que ela salva toda embasada tem outro metodo que possa ser salvo uma imagem?
o programa que fiz é esse
private void salva() {
try {
url = new URL(URL);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
conn.setRequestProperty("Cookie", this.cookie);
conn.setRequestProperty("Content-Language", "en-US");
conn.setDoInput(true);
conn.setDoOutput(true);
InputStream is = conn.getInputStream();
OutputStream os = new FileOutputStream(this.entradagif);
byte[] b = new byte [2048];
int length;
while ((length = is.read(b)) != -1) {
os.write(b, 0, b.length);//
}
is.close();
os.close();
}catch (IOException ex){
this.dadosLista.add("Pesquisa Indisponivel - Tente de Novo.");
this.dados = null;
this.dados = (String[]) dadosLista.toArray(new String[0]);
System.exit(0);
}
}
privatevoidsalva(){try{url=newURL(URL);HttpURLConnectionconn=(HttpURLConnection)url.openConnection();conn.setRequestMethod("GET");conn.setRequestProperty("Cookie",this.cookie);conn.setRequestProperty("Content-Language","en-US");conn.setDoInput(true);conn.setDoOutput(true);InputStreamis=conn.getInputStream();IOUtils.copy(is,newFileOutputStream(this.entradagif));is.close();os.close();}catch(IOExceptionex){this.dadosLista.add("Pesquisa Indisponivel - Tente de Novo.");this.dados=null;this.dados=(String[])dadosLista.toArray(newString[0]);System.exit(0);}}
ve se dá certo
R
RafaTeko
o kadu.m.lino
deu certo, fico perfeito a imagem agora…
obrigado pela ajuda ai
ViniGodoy
Provavelmente o único erro do seu código era que faltava fazer flush() antes do close(). Mas a IOUtils simplifica bastante esse tipo de operação, além de deixar o código bem mais legível.
ViniGodoy
Só um detalhe, “embasado” é algo que tem base, como na frase “ele afirmou com embasamento científico”.
Bem diferente de “embaçado”, que significa “sem cor, embaciado, turvo”.
R
RafaTeko
O ViniGodoy, obrigado pela dica ai…
não sabia essa diferença…rsrs
R
RafaTeko
uma outra pergunta, tem algum filtro que consiga transformar as partes com cor em uma unica cor ( no caso preto) e onde for branco deixar como está
eu estou usando threshold mas não fica como eu preciso, tem algum outro filtro?
R
RafaTeko
eu pesquisei aqui, e pelo que entendi, acho que se eu usar um filtro negativo resolve meu problema.
Mas eu num acho nada desse filtro em java, alguém tem ideia como faço?
ViniGodoy
Pode postar um exemplo da imagem e de como vc gostaria que ficasse? (nem que vc produza o resultado no photoshop?)
E
entanglement
RafaTeko:
uma outra pergunta, tem algum filtro que consiga transformar as partes com cor em uma unica cor ( no caso preto) e onde for branco deixar como está
eu estou usando threshold mas não fica como eu preciso, tem algum outro filtro?
O que é branco, para você? É (R,G,B) = (255,255,255) ou algum cinza bem clarinho também é branco?
R
RafaTeko
ViniGodoy - Desculpa não coloca uma imagem aqui, que o programa que estou fazendo fico em casa no note, e só quando eu chegar em casa…rsrsrs
entanglement - Então, é isso mesmo, a parte que quero deixa em branco são varios pontinhos coloridos (tipo imagem quando está fora de sintonia na TV só que com tons de varias cores) = (R,G,B) = (255,255,255) e onde está o branco meio cinza, queria deixa preto.
R
RafaTeko
Se caso quiser a imagem, quando eu chega em casa eu coloca a imagem e como eu gostaria que ficasse
E
entanglement
RafaTeko:
ViniGodoy - Desculpa não coloca uma imagem aqui, que o programa que estou fazendo fico em casa no note, e só quando eu chegar em casa…rsrsrs
entanglement - Então, é isso mesmo, a parte que quero deixa em branco são varios pontinhos coloridos (tipo imagem quando está fora de sintonia na TV só que com tons de varias cores) = (R,G,B) = (255,255,255) e onde está o branco meio cinza, queria deixa preto.
Melhor você postar a imagem e o resultado desejado. Você quer transformar todos os pontos, exceto os que são absolutamente brancos (RGB = 255,255,255) em pretos? Ou você quer deixar os pontos coloridos em branco, ou conservá-los coloridos?
ViniGodoy
Seria bom postar a imagem. Se o problema for ruído, uma forma de reduzir é usar o filtro da mediana. Basicamente, vc percorre a imagem e, para cada pixel, vê a cor que mais se repete nos 9 pixels vizinhos e usa ela no lugar. Ele tem uma vantagem sobre os filtros da média, pois ele praticamente não gera “blur”.
Quando tiver em casa posso postar um exemplo aqui.
Outra possibilidade, se o ruído for mais ou menos constante, é usar uma transformada de Fourrier. Mas isso não é nem um pouco trivial de se explicar aqui no tópico, embora os resultados sejam ótimos.
estão ai a imagem como é, e como eu quero que fique
é um captcha, e pra fica como eu quero, eu fiz no foto shop, usei a ferramenta inversão de cores e depois deu um threshold, só isso
o threshold eu uso em java já, só que a inversão de cores, eu num sei se tem na biblioteca do java, pelo menos num achei nada sobre ele
o ViniGodoy, eu tinha visto esse site que me mando falando sobre os filtros de imagem, só que não cheguei a ler todo, tava sem tempo.
ViniGodoy
Eu faria o seguinte:
a) Converter para grayscale;
b) Aplicar uma operação de abertura morfológica.
Se você ao invés de aplicar uma abertura aplicar duas erosões e uma restauração morfológica, é capaz até de conseguir um resultado ainda melhor do que aquele ali.
R
RafaTeko
ViniGodoy:
Eu faria o seguinte:
a) Converter para grayscale;
b) Aplicar uma operação de abertura morfológica.
Se você ao invés de aplicar uma abertura aplicar duas erosões e uma restauração morfológica, é capaz até de conseguir um resultado ainda melhor do que aquele ali.
mais tipo deixa eu ver se entendi o que falou.
aplico o grayscale e a operação de abertura morfológica, mas só isso num ira sair aquele efeito de fundo,
eu preciso tirar ele e deixa só as letras visíveis como fiz na segunda imagem.
ViniGodoy
Apesar de que no teu caso tá bem fácil tratar aquela imagem. O tom de cinza é bem específico, vc poderia binarizar por ele.
Ele permite que você teste diversos filtros. Quando achar a combinação certa, é só implementar.
R
RafaTeko
baixei e usei ele aqui…
usei a função “negativo” mas num achei nenhuma função threshold pra ver se dava certo o que eu tava pensando.
tipo meu pensamento era, usar o negativo para poder deixa as letras presta e o fundo no tom mais claro, e usaria o threshold depois e ai iria usar a erosão e dilatação para poder melhora a imagem o maximo que desse.
o que acha?
desculpa tantas perguntas, mas que é sou meio leigo com algumas coisas em java.
ViniGodoy
Parece que dá certo. Agora que notei que um dos filtros mais básicos (que é o threshold) eu não implementei mesmo, hehehehe.
R
RafaTeko
hehehehe…
Mas então, só que eu num acho a função “negativo” para o java, num achei nada falando sobre ela, se tem na biblioteca e tal.
e matemática,ta fácil, depois de 3 anos de calculo, física, álgebra e assim por diante…kkkkkkkkkkk
zuera, num deve ser tão fácil não, ainda mais quando escuto o povo do ano a frente reclamando que tá foda a matéria…kkkkk
E
entanglement
Mas a parte de processamento digital de imagens não é tão difícil, matematicamente, assim. É até legal porque não é nem um pouco abstrato.
O difícil é ficar tentando absorver aqueles conceitos de topologia que se dão em álgebra linear - isso sim é que é abstrato.
R
RafaTeko
ah sim entendeu, vamos ver esse ano quando começa a matéria
pena eu não ter tido um bom professor em álgebra linear, vou pena um pouco então…rs
ViniGodoy
É verdade, acho que é porque pensei junto na parte de síntese de imagens em 3D, que é outra área onde trabalho bastante. E ali, é álgebra linear na veia.
Mas também acho muito mais digerível do que muitas matérias da engenharia. Até porque, por definição, a área de imagens permite que você visualize os resultados das contas. Me lembro quando cursei Matemática, que boa parte dos teoremas eram essencialmente descritos por suas demonstrações, sem qualquer analogia visual (e pior ainda, no caso da Matemática pura, sem nem mesmo com aplicação prática)… era tenso.
R
RafaTeko
ah sim, com certeza
espera agora quando eu tiver a matéria, ai sim vou ver se é difícil ou fácil pra mim…rsrs