如何将图片转换为文本并将其作为文本消息发送到android

时间:2016-04-01 16:41:05

标签: android

我开发了一个Android应用程序,用户可以使用SmsManager Api向任何号码发送消息。

SmsManager smsManager = SmsManager.getDefault();
smsManager.sendTextMessage("phoneNo", null, "sms message", null, null);

现在我希望该用户使用

将小图片发送到任意数字
smsManager.sendTextMessage("phoneNo", null, picture, null, null);

我不想通过MMS发送这张图片。我知道这可以通过在发送端将图片转换为字符串并在接收端将字符串重新转换为图片来实现。但我不知道怎么做。这是Android应用程序的快照,它已经完成了这项任务。我想这样做,如快照链接所示。 Here is snapshot

3 个答案:

答案 0 :(得分:4)

如果您的应用有发送/接收短信功能,为了能够通过短信发送,我建议您将位图转换为Base64字符串。这是一个示例代码:

    public String BitMapToString(Bitmap bitmap){
        ByteArrayOutputStream bytes = new ByteArrayOutputStream();
        bitmap.compress(Bitmap.CompressFormat.PNG, 100, bytes);
        byte[] imageBytes = bytes.toByteArray();
        String encodedImage = Base64.encodeToString(imageBytes, Base64.DEFAULT);
    return encodedImage;
    }

    public Bitmap StringToBitMap(String encodedString){
        try {
          byte [] encodeByte=Base64.decode(encodedString,Base64.DEFAULT);
          Bitmap bitmap=BitmapFactory.decodeByteArray(encodeByte, 0, encodeByte.length);
          return bitmap;
        } catch(Exception e) {
          e.getMessage();
          return null;
        }
     }

答案 1 :(得分:1)

首先将位图转换为字节数组

ByteArrayOutputStream stream = new ByteArrayOutputStream();
bmp.compress(Bitmap.CompressFormat.PNG, 100, stream);
byte[] byteArray = stream.toByteArray();

然后将其转换为String

String string = new String(byteArray, "UTF-8");

在另一端扭转过程

byte[] byteArray = string.getBytes("UTF-8");

最后

Bitmap bmp = BitmapFactory.decodeByteArray(byteArray, 0, byteArray.length);

答案 2 :(得分:0)

您可以使用此库转换任何图像。

https://github.com/w446108264/XhsEmoticonsKeyboard