Sunday, 19 August 2012

Text To Image Conversion - Android

In android text to image conversion is very easy. We may need to convert text to image at run time to make it more fancy or to draw it on specific component. For this purpose you have to use canvas, paint and bitmap. Here is code to convert text to image,

Main.java file

package com.android.texttoimage;

import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;

public class Main extends Activity implements OnClickListener {
    ImageView iv;
    Button btn;
    EditText tv;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
       
        iv=(ImageView)findViewById(R.id.iv);
        tv=(EditText)findViewById(R.id.tv);
       
        btn=(Button)findViewById(R.id.btn);
        btn.setOnClickListener(this);
    }

    public void onClick(View v) {
        Bitmap b = Bitmap.createBitmap(200,200,
                Bitmap.Config.ARGB_8888);
        Canvas cv=new Canvas(b);
        Paint paint=new Paint();
        paint.setStyle(Paint.Style.STROKE);
        paint.setStrokeWidth(1);
        paint.setColor(Color.MAGENTA);
        paint.setTextSize(30);
        cv.drawText(tv.getText().toString(), 75, 75, paint);
        paint.setStyle(Paint.Style.FILL);
        paint.setAntiAlias(true);
        paint.setTextSize(30);
        cv.drawText(tv.getText().toString(), 75, 110, paint);
        iv.setImageBitmap(b);
    }
}

And here is main.xml,

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <EditText
        android:layout_width="fill_parent"
        android:layout_height="50dp"
        android:id="@+id/tv"/>
    <Button
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="Button"
        android:id="@+id/btn"/>
    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/iv"
        android:src="@drawable/icon"/>
</LinearLayout>

There is no need of permissions for this stuff. In this case you can use different sizes, strokes, fonts and colors. 

One of the application where I used this stuff is page curl effect. Where I was drawing text on each page.

2 comments:

  1. i have tried Text2Jpg which look awesome and convert any text to a jpg image with or without background custom image.

    ReplyDelete