Olá, Gostaria de inserir um imagem em j2me, eu consigo se a imagem estiver na local. Mas gostaria de inserir uma imagem que está na internet. se alguem puder me ajudar… Agradeço desde já.
Depende de como vai receber a imagem.
Se for de um aplicativo servidor, receba os bytes dela e depois crie a imagem com esses bytes.
Image.createImage(bytes[], offset, length)
- você pode achar facil na documentação…
Interessante este modo, mas gostaria de exibir a imagem que esteja em um site por exemplo
no picasa, tipo pegaria sua url e seria mostrado no aparelho…
Se puder me ajudar agradeço…
Não sei se esse picasa ou qualquer outro site que vai usar tem um endereco amigavel que só responde a imagem, sem html. se a resposta é sim, você vai ter que abrir uma conexão com essa url da imagem, pegar os bytes dela e jogar nesse Image. Agora se a resposta for não, você vai ter que pegar todo o html processar, separar a imagem real (url verdadeira) e ai criar a imagem. Porque não tem como ignorar o resto da pagina do site.
Eu faria com um servidor que processa tudo e envia só a imagem processada para o celular, creio ser melhor porque tira toda a responsabilidade e processamento do celular que é bem mais limitado, alem de permitir muito mais coisas legais para fazer.
Como sempre, dica melhor dada impossível. Se o cara depois desta não resolver, pelamor…
Grande mestre… boone, quanto tempo!
Agradeço o elogio.
Bom vamos ver ai qual é a dele agora, espero que ele faça do melhor jeito possivel… ou compre a solução de mim.
Abraços,
Ricoldi.
muito obrigado pelas dicas! mas consegui uma solução bem interessante para quem tiver a mesma duvida que eu tinha vai ai o código
package ctrl;
import javax.microedition.io.*;
import java.io.*;
import javax.microedition.lcdui.Image;
public class ctrl_conimagem
{ /*--------------------------------------------------
* Abre uma conexão http e baixa um arquivo png
* em um array de bytes
*-------------------------------------------------*/
public Image getImage(String url) throws IOException
{ //usamos aqui ao invés de httpconnection a conexao padrao, o qual nao nos garante nada.
//embora a conexao http tambem nao seja muito confiavel.
ContentConnection connection = (ContentConnection) Connector.open(url);//aqui na url pode ser apenas o endereço da imagem do picasa ou qualquer outro endereço
DataInputStream iStrm = connection.openDataInputStream();
Image im = null;
try
{
byte imageData[];
int length = (int) connection.getLength();
if (length != -1)
{
imageData = new byte[length];
// Le um png em um array
iStrm.readFully(imageData);
}
else //se o tamanho não está disponível
{
ByteArrayOutputStream bStrm = new ByteArrayOutputStream();
int ch;
while ((ch = iStrm.read()) != -1)
bStrm.write(ch);
imageData = bStrm.toByteArray();
bStrm.close();
}
//Cria a imagem de um array de bytes
im = Image.createImage(imageData, 0, imageData.length);
}
finally
{
// Clean up
if (iStrm != null)
iStrm.close();
if (connection != null)
connection.close();
}
return (im == null ? null : im);
}
}
O que vc fez não foi nada além do que o ricoldi já havia indicado.
Até que para uma 1a versão a rotina funciona, mas se for usar de forma séria, faça o favor a você mesmo de:
-
colocar nome de classe em maiuscula
-
nao usar finally e fazer um outro try para cada objeto que for fechar.
-
Nao fazer um return porco assim. O teu return equivale a fazer o mesmo que:
return im;
Pq ? Pq se o im for nulo, retorna nulo, se não for, retorna o próprio objeto ! Ou seja, teu código tá fedidin…
E por aí vai…
[quote=boone]O que vc fez não foi nada além do que o ricoldi já havia indicado.
Até que para uma 1a versão a rotina funciona, mas se for usar de forma séria, faça o favor a você mesmo de:
-
colocar nome de classe em maiuscula
-
nao usar finally e fazer um outro try para cada objeto que for fechar.
-
Nao fazer um return porco assim. O teu return equivale a fazer o mesmo que:
return im;
Pq ? Pq se o im for nulo, retorna nulo, se não for, retorna o próprio objeto ! Ou seja, teu código tá fedidin…
E por aí vai…[/quote]
É manoloHÁ , você pegou entendeu bem a ideia da coisa, não sei a quanto tempo mexe com isso, o que o Boone disse tem toda a razão (Mas Boone, a de convir que aqui mesmo no forum já vimos códigos porcos de verdade) ele é muito exigente (rs…), mas sempre procure melhorar seu código depois que ele passa a funcionar vocẽ ganha em experiencia e até desempenho.
De qualquer forma, parabéns e boa sorte.
Att,
Ricoldi.
Olá ricoldi fiz esta primeira versão baseado nas suas dicas que foram ótimas, mas vou melhora-lo.
…as dicas no boone também são aceitáveis apesar de ser ARROGANTE!
de qualquer forma muito obrigado estamos aqui trocar conhecimentos
Vlw ricoldi!