| Autor |
Mensagem |
|
|
Costumo fazer o seguinte: uso algum programa que faz a conversão para mim (como o ImageMagick, http://www.imagemagick.org/script/index.php ) e o chamo via Runtime.exec.
Entretanto, parece que a API ImageIO tem um "writer" para o formato BMP. Vou dar um exemplo:
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=5076878
|
 |
|
|
Não se esqueça que usar um número mágico (20) não é recomendável em C++.
Em vez disso, você DEVE usar as constantes simbólicas, definidas na documentação (o MSDN é seu amigo de fé e seu irmão camarada )
Além disso, em C++ é aconselhável usar sempre o indicador de escopo global ("::") para indicar APIs do Windows.
|
 |
|
|
O código abaixo funciona corretamente. Não se esqueça de usar as bibliotecas user32.lib e advapi32.lib.
|
 |
|
|
Você está passando os parâmetros errados, usando as APIs erradas, e provavelmente passando um tipo de arquivo errado. O Windows XP só aceita arquivos .bmp, não .png ou .jpeg. Você precisa efetuar as conversões manualmente para .bmp se precisar usar com Windows XP; no Windows Vista ou 7 é possível passar um arquivo .jpg.
|
 |
|
|
juloko666 wrote:
Por que isso Double.parseDouble("2.382E-42"), imprime 0, se o valor deveria ser 89.96????
Como é que você conseguiu isso? Por mágica, não?
No meu caso, imprimiu "2.382E-42".
|
 |
|
|
Se você já estudou inglês, sabe que a saída esperada deste programa é 26. Experimente!
|
 |
|
|
É assim.
Digamos que você queira editar uma imagem gerada por uma câmera digital de 12 megapixels, ou seja, essa imagem deve ocupar 12 * 1000000 * 4 bytes = 48 Megabytes em memória se você usar 32 bits por pixel (o que não é tão impossível assim - vários formatos usam exatamente esse layout).
Normalmente você não carrega a imagem inteira na memória FÍSICA, e sim cria uma espécie de "memória virtual" onde só uma subimagem dessa imagem total é que fica presente na memória.
Para fazer esse tipo de coisas, você precisa de uma biblioteca poderosa, normalmente fornecida por terceiros e que costuma funcionar melhor com outras linguagens, não Java.
Se você, em vez disso, quiser fazer tudo isso do zero e sem pagar um tostão, precisa pelo menos usar uma biblioteca como a JAI - a Java ImageIO não é suficiente para o que você quer. No FAQ do JAI eles indicam o que fazer com imagens grandes.
http://java.sun.com/products/java-media/jai/forDevelopers/jaifaq.html#largeimages
Que tal dar uma lida em alguns links que
|
 |
|
|
jefers0n wrote: senão corre-se o risco de anulação pois não posso usar nada que eu não saiba o que estou fazendo...
Você conseguiria fazer o mesmo problema usando um simples array?
No seu caso é bem mais simples, já que o array pode ser um array de booleanos, uma entrada para cada letra.
Por exemplo, para indicar que você achou a letra 'A' nesse array de booleanos, você faria:
Então você seta uma entrada para true se achar a letra correspondente à sua entrada, e cria um método que retorna a contagem de entradas "true" no seu array de booleanos. Não precisa usar "set" nem nada muito complicado.
|
 |
|
|
|
Dica: use um programa (como o ImageMagick, que tem interfaces em Java para você usar) que pegue a tal imagem e a converta para uma imagem menor, que você possa carregar sem estourar sua memória.
|
 |
|
|
Ora, o valor 10 em decimal é A em hexadecimal.
Se você quer pegar a string 10 em hexadecimal (cujo valor em decimal é 16) e imprimi-la como 10, ou então pegar a string 105 em hexadecimal (cujo valor em decimal é 261) você precisa usar um método que converte uma string hexadecimal em um número, e então voltar.
Exemplo:
|
 |
|
|
Alguns tipos de imagens são em "tiles" (como o TIFF) e permitem que você edite apenas uma "tile" dela, ou seja, uma porção, não a imagem completa, para evitar esse tipo de problema (gastar uma quantidade excessiva de memória).
Veja os métodos do JAI.
|
 |
|
|
|
Não sou muito conhecedor do Linux, mas qual delas funciona melhor no Linux (ou seja, sem depender de algum "hack" para poder funcionar mais ou menos?)
|
 |
|
|
Use o método isAssignableFrom.
|
 |
|
|
Rode o programa abaixo, e confira a sua saída (arquivo "teste.bin") em um editor hexa. O Java escreve e lê os bytes direitinho. Se você conseguir rodar o programa abaixo direitinho, ele não deve mostrar nada na tela, e gerar um arquivo binário "teste.bin" de 256 bytes.
Exemplo da saída em um editor hexa:
Dica: você teve algumas dificuldades com o "Ç"? É que em Windows-1252 (a codificação usada em C por programas Windows, similar à ISO-8859-1) o Ç tem código 128, e em Unicode o código é U+00C7, ou seja, 199.
Acho que foi isso que lhe confundiu - você NUNCA, NUNCA NUNCA NUNCA deve converter bytes em strings e depois voltar, porque você pode ter uma surpresa desagradável.
|
 |
|
|
|
|
 |
|
|