【问题标题】:Save string as an image on device internal storage将字符串保存为设备内部存储上的图像
【发布时间】:2013-06-19 10:08:43
【问题描述】:

我正在开发一个连接到 facebook 并将用户的个人资料图像保存在设备内部存储中的 Android 应用程序。

这是我的代码:

private void getFacebookUserProfilePicture(String userAccessToken)
{
    String url = Constants.FB_PROFILE_IMAGE_URL + userAccessToken;

    AsyncHttpClient client = new AsyncHttpClient();
    client.get(url, new AsyncHttpResponseHandler()
    {
        @Override
        public void onSuccess(String response)
        {
            saveUserProfileImage(response.getBytes());
        }
    });
}
private void saveUserProfileImage(byte[] imageBytes)
{
    Log.v(TAG, "Save user image");

    FileOutputStream fOut = null;
    try
    {
        fOut = openFileOutput(Constants.FB_PROFILE_IMAGE_FILE_NAME, Context.MODE_PRIVATE);

        fOut.write(imageBytes);
        fOut.close();
    }
    catch (IOException ioe)
    {
        ioe.printStackTrace();
    }
}

我正在使用 Android 模拟器进行测试,我已使用 Eclipse DDMS 将文件保存到我的 PC,但我无法打开它。

我做错了什么?我保存了一个 jpg 扩展名。

或者,问题可能是:如何将byte[] 保存为 JPG 图片?

如果我在浏览器上测试 url,我会得到一个 2,47KB 的图像。我从设备上复制的图像是 4,26KB。

【问题讨论】:

  • 你有什么错误吗??
  • 不,我没有收到任何错误。
  • 首先,您不能将字符串转换为字节。您必须将图像转换为字节数组..
  • 你得把图片转换成字节数组什么意思?
  • 你只有图像字符串,但没有图像。如果您有任何图像,那么我们可以转换为字节数组..

标签: java android


【解决方案1】:

您可以将字符串转换为字节数组,然后将此数组写入您的文件名。 你用这个方法写数组:

public void WriteByteToFile(byte[] mybytes, String filename){

try {

FileOutputStream FOS = openFileOutput(filename, MODE_PRIVATE);
FOS.write(mybytes);
FOS.close();


} catch (FileNotFoundException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
} catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}

}

将字符串转换为字节数组,如下所示:

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

试试看,这可以解决你的问题..

【讨论】:

  • 感谢您的回答。我在我的问题中添加了更多细节。
【解决方案2】:

您可以关注此link。之后,您可以检查它是否正在从设备加载图像。

【讨论】:

  • 感谢您的回答。我在我的问题中添加了更多数据。
猜你喜欢
  • 1970-01-01
  • 2013-10-28
  • 1970-01-01
  • 2014-06-11
  • 1970-01-01
  • 2016-08-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多