2014-01-27 4 views
0

중간에 임의의 픽셀과 정수로 이미지를 만듭니다. 그러나 색상이 옳지 않은 것처럼 보입니다.TYPE_INT_ARGB 이미지가 올바르게 표시되지 않습니다.

click!

당신이 볼 수 있듯이, 색상은 옳지 않다. 여기에 100 % 불투명도와 흰색 숫자의 색상 (255,255,255,255)를 설정 한 코드

private void createImage(){ 
    try{ 
     String key = "3534"; 
     BufferedImage thumbnail = new BufferedImage(300, 300,BufferedImage.TYPE_INT_ARGB); 
     Graphics graphics = thumbnail.getGraphics(); 
     graphics.setFont(new Font(null, Font.BOLD, 100)); 

     randomizePixels(graphics); 

     graphics.setColor(new Color(255,255,255,255)); 
     graphics.drawString(key, thumbnail.getWidth()/2, thumbnail.getHeight()/2); 

     ImageIO.write(thumbnail,"jpg",new File("c:\\image1.jpg")); 
    }catch (Exception e){ 
     e.printStackTrace(); 
    } 
} 
private void randomizePixels(Graphics graphics){ 
    Random random = new Random(); 
    for(int k=0;k<300;k++){ 
     for(int j=0;j<300;j++){ 
      graphics.setColor(new Color(random.nextFloat(), random.nextFloat(), random.nextFloat(), random.nextFloat())); 
      graphics.fillRect(k,j,1,1); 
     } 
    } 
} 

당신이 볼 수 있듯이

입니다.

내가 틀리게해야 할 일이 있습니까? 내 번호를 흰색으로 되 돌리는 방법은 무엇입니까?

답변

2

우선, 코드를 실행할 때 약간 다른 결과가 나타납니다. 점들에는 임의 색상이 있어야하며 게시 할 때 모두 빨간색이 아닙니다.

enter image description here

내가 정확히 수행하려는 모르겠어요,하지만 난 당신이 랜덤 노이즈를 원하고 부분적으로 눈에 보이는 텍스트 오버레이를 넣어 같아요. 출력 형식으로 png를 사용하여 시작할 것입니다. jpg가 어떻게 투명성을 처리하는지 모르겠습니다. 그래서 무작위로 채워진 픽셀을 먼저 단색으로 칠한 다음 텍스트 위에 다시 써야합니다. 당신은 당신이이 같은 픽셀 무작위 후 색상을 설정 이동해야합니다 그 후

private static void createImage(){ 
    try{ 
     String key = "3534"; 
     BufferedImage thumbnail = new BufferedImage(300, 300,BufferedImage.TYPE_INT_ARGB); 
     Graphics graphics = thumbnail.getGraphics(); 

     randomizePixels(graphics); 

     graphics.setColor(new Color(255, 255, 255 ,255)); 
     graphics.setFont(new Font(null, Font.BOLD, 100)); 
     graphics.drawString(key, thumbnail.getWidth()/2, thumbnail.getHeight()/2); 
     ImageIO.write(thumbnail, "png", new File("image1.png")); 
    }catch (Exception e){ 
     e.printStackTrace(); 
    } 
} 
private static void randomizePixels(Graphics graphics){ 
    Random random = new Random(); 
    for(int k=0;k<300;k++){ 
     for(int j=0;j<300;j++){ 
      graphics.setColor(new Color(random.nextFloat(), random.nextFloat(), random.nextFloat(),1)); 
      graphics.fillRect(k,j,1,1); 
     } 
    } 
} 

를 텍스트가 "숨겨진"텍스트

enter image description hereenter image description here

+0

I와 원하는 색상을/얻을 것이다 내 웹 서버 테스트를로드하려고합니다 (64x64 jpg 만 허용). 나는 대부분의 랜덤 잡음이 큰 크기가된다는 것을 알았습니다. 또한 이미지의 숫자는 이미지가 올바르게 업로드되었는지 확인하는 것입니다. 답장을 보내 주셔서 감사합니다! –

+1

물론 랜덤 노이즈는 큰 크기가됩니다. 이론 상으로는 가능한 엔트로피가 극대화되므로 압축하기가 어렵습니다. 결과에 대해 걱정이된다면 투명도가 높기 때문에 항상 채워진 그림으로 시작해야합니다 (그리고 알파 채널을 다른 작업에도 적용 할 수 있습니다). 다른 브라우저에서 다르게 표시됩니다. – NeplatnyUdaj

관련 문제