1// Copyright (c) 2011 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#include "chrome/browser/ui/webui/web_ui_util.h" 6 7#include <vector> 8 9#include "base/base64.h" 10#include "ui/base/resource/resource_bundle.h" 11#include "ui/gfx/codec/png_codec.h" 12 13namespace web_ui_util { 14 15std::string GetImageDataUrl(const SkBitmap& bitmap) { 16 std::vector<unsigned char> output; 17 gfx::PNGCodec::EncodeBGRASkBitmap(bitmap, false, &output); 18 std::string str_url; 19 str_url.insert(str_url.end(), output.begin(), output.end()); 20 21 base::Base64Encode(str_url, &str_url); 22 str_url.insert(0, "data:image/png;base64,"); 23 return str_url; 24} 25 26std::string GetImageDataUrlFromResource(int res) { 27 // Load resource icon and covert to base64 encoded data url 28 RefCountedStaticMemory* icon_data = 29 ResourceBundle::GetSharedInstance().LoadDataResourceBytes(res); 30 if (!icon_data) 31 return std::string(); 32 scoped_refptr<RefCountedMemory> raw_icon(icon_data); 33 std::string str_url; 34 str_url.insert(str_url.end(), 35 raw_icon->front(), 36 raw_icon->front() + raw_icon->size()); 37 base::Base64Encode(str_url, &str_url); 38 str_url.insert(0, "data:image/png;base64,"); 39 return str_url; 40} 41 42} // namespace web_ui_util 43