Home | History | Annotate | Download | only in webui
      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 
     13 namespace web_ui_util {
     14 
     15 std::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 
     26 std::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