こんにちわ山田です。
昨日は、オリオン座流星群がよく見えたそうですね。
まったく見れなかったです、、。
たまたま夕方のニュースで情報を得ていたので、楽しみにしていたら
朝になるまで思い出せませんでした。
そんなこんなで、画像を外部のサービス(API)を利用して
圧縮して、画像サイズを小さくするメソッドを作成したので、その覚書です。
開発環境 ASP.NET
開発言語 C#
使用したのは、TinyPNGでほぼ公式のリファレンス通りに実装しました。
画像→byte配列にするのが苦戦しました。ここを参考にさせていただきました。
呼び出し元
protected void ButtonUpload_Click(object sender, EventArgs e)
{
Label1.Text = "";
if(FileUpload1.HasFile)
{
string path = @"C:\temp\\";
//つけたいファイル名
string fileName = FileUpload1.PostedFile.FileName;
string output = Path.Combine (path, fileName);
//アップロードファイルを入力ストリーム経由でbyte配列に読み込む
Byte[] aryData = new Byte[FileUpload1.PostedFile.ContentLength];
FileUpload1.PostedFile.InputStream.Read(aryData, 0, FileUpload1.PostedFile.ContentLength);
output = SizeDownImage(aryData, output);
Label1.Text = "次のファイル名で保存しました: " + output;
}
呼び出される側
/// <summary>
/// アップされた画像をTinyJPGのAPIを使用して、圧縮して保存するメソッド
/// ・引数:
/// byte[] 画像のバイナリデータ
/// string 保存先のファイルパス
/// ・返り値:
/// string 保存後のファイルパス
/// ※失敗した場合は、空を返却
/// </summary>
/// <param name="_imageByte"></param>
/// <param name="_output"></param>
/// <returns></returns>
public static string SizeDownImage(Byte[] _imageByte, string _output)
{
string key = [外部APIキー];
string url = [外部APIのURL];
string auth = Convert.ToBase64String(Encoding.UTF8.GetBytes("api:" + key));
WebClient client = new WebClient();
client.Headers.Add(HttpRequestHeader.Authorization, "Basic " + auth);
string result = "";
try
{
//画像アップロード //
client.UploadData(url, _imageByte);
// 画像ダウンロード
client.DownloadFile(client.ResponseHeaders["Location"], _output);
result = _output;
}
catch (WebException ex)
{
log.Error(ex.Message);
}
finally
{
client.Dispose();
}
return result;
}
}
タイニーPNG のAPIを利用した画像圧縮アプリケーションの作成
Related Posts:
JavaScriptを使って外部ファイルを読み込む方法こんにちわ、開発者のⅠです。 さて、前回から時間が空いてしまいましたが、GoogleMapに関わるお話の続きです。 前回は、Google Mapにマーカーを表示させる方法について紹介いたしましたが、今度はその応用として、マーカーのデータを外部ファイルから読み込む方法について紹介したいと思います。… Read More
クライアントからリクエストされたURLを取得する方法 こんにちは山田です。 開発環境:ASP.NET2.0 開発言語:C# リライトをかけたページの改ページと並び替えをしようと思っていた時に、 仮想URLを取得したい場面がありました。 クラスライブラリを探したり、ネットを探したら 綺麗にまとめているページがあったので参考にさせていただ… Read More
XMLHttpRequestとは?こんばんわ、開発者のⅠです。 さて、今回は前々回の投稿についての補足として、APIのひとつであるXMLHttpRequestについて説明したいと思います。 以下のソースは、前々回の投稿での使用例です。 マーカーの情報が記録されたCSVファイルを読み込むための関数 getCSVFile に組み込ん… Read More
CSVファイルとは?こんにちわ、開発者のⅠです。 今回は、前回の投稿で触れたCSVファイルについて説明したいと思います。 CSVは「Comma Separated Values」のそれぞれ頭文字です。 ”カンマ区切り文字”とでも言いましょうか。 「名前、経度、緯度」の各要素が書き込まれたCSVファイルを例にしてみ… Read More
GetTypeで型名を見る C#こんにちは山田です。 型名って忘れること多くないですか? そんな時にこれさえ覚えとけば安心の、型名の出力方法の覚書です。 開発環境:ASP.NET 2.0 開発言語:C# 必要となる構文はこちらです。 Object.GetType メソッド 例) ASPX側 <%#… Read More
ラベルつけてちょ~
返信削除