2013-03-21 7 views
1

android 응용 프로그램에서 텍스트를 이미지화하는 코드가 있으며 텍스트를 이미지로 변환하고 SD 카드의 로컬 위치에 저장하는 중입니다. 내가 직면 한 문제는 전체 텍스트를 이미지로 변환하지 않는다는 것입니다. 다음은 텍스트 뷰에 제공하는 텍스트입니다. "이것은 ashdf asdhfj sdhkfh shd jshd hsdhfsdjkhfksdjfhsdlhfksldhfklh shdkfjhsdkj hfsdjk kdjhfsk djhfskldh shdjkfhk sjhdfkh"입니다. 여기 이미지로 변환 것입니다 여기에Android Text to Image 문제

enter image description here 내 코드

RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(LayoutParams.MATCH_PARENT, 60); 

    tv.setLayoutParams(layoutParams); 

    tv.setText("this is t ashdf asdhfj sdhkfh shd jshd hsdhfsdjkhfksdjfhsdlhfksldhfklh shdkfjhsdkj hfsdjk kdjhfsk djhfskldh shdjkfhk sjhdfkh "); 
    tv.setTextColor(Color.BLACK); 
    tv.setBackgroundColor(Color.WHITE); 

    Bitmap testB; 
    timer = new Timer(); 
    timer.schedule(new TickerTask(), 1000,25); 
    testB = Bitmap.createBitmap(tv.getText().length(), 20, Bitmap.Config.ARGB_8888); 
    Canvas c = new Canvas(testB); 

    tv.layout(0, 0, 800, 30); 
    tv.draw(c); 
    iv = (ImageView) findViewById(R.id.menuIcon); 
    x=40; 
    iv.setPadding(x, 0, 0, 0); 
    iv.setLayoutParams(layoutParams); 
    iv.setBackgroundColor(Color.GREEN); 
    iv.setImageBitmap(testB); 
    iv.setDrawingCacheEnabled(true); 
    BitmapDrawable drawable = (BitmapDrawable) iv.getDrawable(); 
    Bitmap bitmap = drawable.getBitmap(); 
    //Bitmap bitmap = testB; 
    File sdCardDirectory = Environment.getExternalStorageDirectory(); 
    File image = new File(sdCardDirectory, "test.png"); 

    boolean success = false; 

    // Encode the file as a PNG image. 
    FileOutputStream outStream; 
    try { 

     outStream = new FileOutputStream(image); 
     bitmap.compress(Bitmap.CompressFormat.PNG, 100, outStream); 
     /* 100 to keep full quality of the image */ 

     outStream.flush(); 
     outStream.close(); 
     success = true; 
    } catch (FileNotFoundException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

    if (success) { 
     Toast.makeText(getApplicationContext(), "Image saved with success"+tv.getText().length(), 
       Toast.LENGTH_LONG).show(); 
    } else { 
     Toast.makeText(getApplicationContext(), 
       "Error during image saving", Toast.LENGTH_LONG).show(); 
    } 

답변

0

는 당신이이 이미지에 텍스트 전체를 변환하려면 :

canvas.drawText(); 

샘플 코드를 textview 자체가 아닌 textview 내부의 텍스트 너비를 가져옵니다. 여기 텍스트의 폭을 얻는 방법이 있습니다.

string texting="Some Text"; 
    Rect bounds = new Rect(); 
    Paint textPaint = tv.getPaint(); 
    textPaint.getTextBounds(texting,0,texting.length(),bounds); 
    int heights= bounds.height(); 
    int widths = bounds.width(); 

이제 비트 맵과 전체 텍스트가 이미지로 변환됩니다 (긴 또는 작은 어떻게 상관없이)를 만들기 위해 위의 폭과 높이를 사용할 수 있습니다.

0

변경이 행입니다 : 여기에

RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(LayoutParams.MATCH_PARENT, 60); 

:

RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT); 

직접 페인트를 시도 할 수 이 :

Paint paint = new Paint(); 
paint.setStyle(Paint.Style.FILL); 
paint.setAntiAlias(true); 
paint.setTextSize(30); 
canvas.drawText("Style.FILL", 75, 110, paint); 
+0

문제가 표시되지 않습니다. 문제는 이미지의 전체 크기를 커버하고 이미지에 저장해야하는 크기입니다. testB = Bitmap.createBitmap (tv.getText(). length(), 20, Bitmap.Config.ARGB_8888); 이것은 텍스트 크기와 똑같은 생성 된 이미지 크기를 어떻게 지정해야하는지에 대한 주된 문제입니다. –

+0

보기 (이 경우 TextView)에서 이미지를 가져 오려고합니다. 이 뷰에 내용이 모두 들어갈 공간이 충분하지 않으면 촬영할 이미지의 공간이 표시됩니다. TextView를 확대해야하므로 모든 내용을 저장할 수 있습니다. –

+0

텍스트가 TextView보다 큰 경우는 어떻습니까? 전체 텍스트를 이미지로 변환해야합니다. 캔버스에 직접 텍스트를 제공 할 수있는 방법이 있나요? –

0

너의 TextView 너비 너비에 너의 문제가있는 것 같아. 너의 뷰의 그림 영역을 비트 맵으로 변환해라. 텍스트의 일부가 숨겨지면, 정말로 그림 영역에 그려지지 않는다. 왜 TextView에서 텍스트를 얻고 캔버스에 기록하지 않는 당신은이 방법을 사용할 수 있습니다 :

Paint paint = new Paint(); 
paint.setColor(Color.RED); 
paint.setStyle(Paint.Style.FILL); 

paint.setAntiAlias(true); 

paint.setTextSize(20); 

canvas.drawText("Hello Android! Fill...", 50, 230, paint); 
+0

캔버스에 텍스트를 직접 공급하여 전체 텍스트를 이미지로 변환 할 수있는 방법을 제안 해 주시겠습니까? –

+0

@ JibranKhan 제 편집을 참조하십시오. – hasanghaforian

+0

코드 주셔서 감사합니다. 코드를 편집하고 코드와 병합 할 수 있습니까? 난 혼란스러워하고 텍스트를 사용자 입력에서 동적으로하고 정확한 너비로 이미지로 변환하고 싶습니다. –