You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
73 lines
1.9 KiB
73 lines
1.9 KiB
/* |
|
* Copyright 2015 Google Inc. |
|
* |
|
* Use of this source code is governed by a BSD-style license that can be |
|
* found in the LICENSE file. |
|
*/ |
|
|
|
#include "SkBitmap.h" |
|
#include "SkCommandLineFlags.h" |
|
#include "SkCommonFlags.h" |
|
#include "SkData.h" |
|
#include "SkImage.h" |
|
#include "SkStream.h" |
|
#include "SkTypes.h" |
|
|
|
#include "sk_tool_utils.h" |
|
|
|
DEFINE_string(in, "input.png", "Input image"); |
|
DEFINE_string(out, "blurred.png", "Output image"); |
|
DEFINE_double(sigma, 1, "Sigma to be used for blur (> 0.0f)"); |
|
|
|
|
|
// This tool just performs a blur on an input image |
|
// Return codes: |
|
static const int kSuccess = 0; |
|
static const int kError = 1; |
|
|
|
int main(int argc, char** argv) { |
|
SkCommandLineFlags::SetUsage("Brute force blur of an image."); |
|
SkCommandLineFlags::Parse(argc, argv); |
|
|
|
if (FLAGS_sigma <= 0) { |
|
if (!FLAGS_quiet) { |
|
SkDebugf("Sigma must be greater than zero (it is %f).\n", FLAGS_sigma); |
|
} |
|
return kError; |
|
} |
|
|
|
sk_sp<SkData> data(SkData::MakeFromFileName(FLAGS_in[0])); |
|
if (nullptr == data) { |
|
if (!FLAGS_quiet) { |
|
SkDebugf("Couldn't open file: %s\n", FLAGS_in[0]); |
|
} |
|
return kError; |
|
} |
|
|
|
sk_sp<SkImage> image(SkImage::MakeFromEncoded(data)); |
|
if (!image) { |
|
if (!FLAGS_quiet) { |
|
SkDebugf("Couldn't create image for: %s.\n", FLAGS_in[0]); |
|
} |
|
return kError; |
|
} |
|
|
|
SkBitmap src; |
|
if (!image->asLegacyBitmap(&src, SkImage::kRW_LegacyBitmapMode)) { |
|
if (!FLAGS_quiet) { |
|
SkDebugf("Couldn't create bitmap for: %s.\n", FLAGS_in[0]); |
|
} |
|
return kError; |
|
} |
|
|
|
SkBitmap dst = sk_tool_utils::slow_blur(src, (float) FLAGS_sigma); |
|
|
|
if (!sk_tool_utils::EncodeImageToFile(FLAGS_out[0], dst, SkEncodedImageFormat::kPNG, 100)) { |
|
if (!FLAGS_quiet) { |
|
SkDebugf("Couldn't write to file: %s\n", FLAGS_out[0]); |
|
} |
|
return kError; |
|
} |
|
|
|
return kSuccess; |
|
}
|
|
|