ラベル image の投稿を表示しています。 すべての投稿を表示
ラベル image の投稿を表示しています。 すべての投稿を表示

2015年5月2日土曜日

画像圧縮サービスの比較

リンク集的メモ。


ファイルサイズが一番小さいのはTinyPNGのJPEGだった。
(JICは圧縮率を指定できるので除外。) ただ、Compressor.ioのPNGがファイルサイズの割に一番きれいだった。
(paint.netで同じようなPNGにしてみたが、Compressor.ioのPNGの方がなぜかきれいだった。)

2013年12月10日火曜日

今どきのHTTPヘッダーによるセキュリティ向上の調査メモ

今夜つける HTTPレスポンスヘッダー (セキュリティ編) - うさぎ文学日記の中で、よく知らなかったヘッダーについて調べたメモ。

いくつかのヘッダーについてのブラウザ別のサポート状況はこちら。
(ちょっと古いが、少なくともこれ以降のバージョンではサポートしているということは分かる。)

IPA ISEC セキュア・プログラミング講座:Webアプリケーション編 第8章 マッシュアップ:クライアントサイドマッシュアップ: #4 対策に利用できる技術


X-XSS-Protection

IE8以降のXSSフィルターはデフォルトで有効になっている(ブロッキングモードではない)。

Security through HTTP response headers

[IEInternals] XSS フィルターを制御する | Hebikuzure's Tech Memo

Internet Explorer 8 には、XSS フィルターとして知られている、反射型クロスサイト スクリプティング攻撃を防止するのに有効な画期的新機能があります。このフィルターは既定ではインターネット ゾーン、信頼済みサイト ゾーン、制限付きサイト ゾーンで動作します。

オフにしている人や、XSS on XSS Filterに備えて、ブロッキングモードで有効にさせるのが無難?
X-XSS-Protection: 1; mode=block


Content-Security-Policy

(参考)Content Security PolicyでXSSを断ち切る | monoの開発ブログ

インラインリソースは'unsafe-inline'で許可できる。
dataスキームURIには"data:"で許可できる。

An Introduction to Content Security Policy - HTML5 Rocks

IEがほぼサポートしていないようなので、効果は限定的か。

CSP policy directives - Security | MDN
CSP is quite usable in Chrome 16+, Safari 6+, and Firefox 4+, and has (very) limited support in IE 10.

セキュリティとしては非常に強力だが、ホワイトリストのメンテが面倒なので外部リソースを気軽に使うようなサイトでは使うのは難しい?

あるいは、こんな風に思いっきり緩くしておくか?(これだと意味がないか...)
Content-Security-Policy:
default-src 'self';
script-src 'unsafe-inline' *;
img-src data: *;
frame-src *;
font-src *;
style-src 'unsafe-inline' *;
report-uri /csp-report.php

見やすくするために改行している。未検証なので取扱注意。
faviconはimg-srcに含まれる。
違反が見つかったら、report-uriにJSONでPOSTされる。
eval()が必要なら'unsafe-inline'も追加する。

Content-Security-Policy-Report-Onlyでチェックのみに使うのが良いかもしれない。


Strict-Transport-Security

IEが10でもサポートしていないことを考えると、これが効かない場合のリダイレクト等の処理も必要。

HTTP Strict Transport Security - OWASP

2011年11月7日月曜日

Titanium Studioで作ったアプリを Android Marketに登録する手順


Titanium Stuidoで作ったAndroidアプリをMarketに登録できる証明書付きapkファイルにする手順は下記の通り。

  1. JDKのbinフォルダ内にあるkeytool.exeを使って、keystoreを作成する
    (作成時に入力するAliasとパスワードを覚えておくこと。)
    参考:keytoolコマンドで公開するandroidアプリに署名するための証明書(鍵)を生成する
  2. Titanium StudioのProject Explorerで該当のプロジェクトを右クリックする
    (Procejt ExploerはTitanium Studioの左側に表示されているView。表示されていない場合はメニューの「Window」→「Show View」から表示できる。)
  3. 表示されたコンテキストメニューから「Deploy」→「Distribute - Android」を選択する
  4. テキストボックスに必要事項を入力してFinish
    ※Distribution Location(apkファイルの作成場所)のパスに半角スペースを含むとエラーになるので注意。
  5. 慌てずにしばらく待つ(少し時間がかかる)
  6. 4で指定したフォルダにapkファイルが作られる

参考:295 デプロイと配布 - Training Lab Tutorials - Appcelerator Wiki


Android Marketに登録するには、最初にGoogle Checkoutで25ドル支払う必要がある。

また、Marketに登録する際にはスクリーンショット等の画像をアップロードできる。
参考:

2011年11月6日日曜日

Titanium Mobileで 特定のURLをブラウザで開くだけの Androidアプリを作成する方法


app.jsを下記の2行にする。(URLは起動したいURLにする。)

Ti.Platform.openURL("http://www.google.co.jp/"); // Googleの場合
Ti.Android.currentActivity.finish(); // ブラウザを起動したらアプリ本体は終了させる

Resources/androidにある下記の画像ファイルを適切な画像ファイルに置き換える。
  • appicon.png (アプリの起動アイコン)
  • default.png (起動時に表示されるスプラッシュ画像)

2011年9月15日木曜日

画面をキャプチャするブラウザのプラグインいろいろ

ブラウザで表示している画面のスクリーンショットを撮るプラグインのメモ。



いずれも、Flashの領域もキャプチャできたし、画面全体をスクロールしてキャプチャする機能もあった。

画像形式は「キャプチャー イット!ツールバー」はJPEG、それ以外はJPEGかPNGから選べる。

Google Chromeの2つは、キャプチャ直後に新しいタブが開き、そこでキャプチャした画像の編集ができる。そのまま1クリックで印刷もできるので、画面イメージを印刷する用途には便利。
でも逆に、ファイルとしてどんどん溜めていきたい場合には毎回タブで開くより「キャプチャー イット!ツールバー」のように黙々とフォルダに画像ファイルを保存して行ってくれた方が便利かも。(「Screen Capture」の方は、設定でそうすることもできる。)

Chromeの「Screen Capture」以外は日本語化されていた。


ブラウザのプラグインではないけど、JTrimは画面キャプチャから画像の加工までできて便利。

2010年11月10日水曜日

Microsoftの Webページ埋め込み用画像拡大ビューワーサービス Zoom.it

Zoom.itはMicrosoftのLive Labsが作ったWebページに埋め込める画像Viewer。
もともとはSeadragonという名前だったようだ。(参考:巨大な画像のビューアーを作ってくれる『Seadragon』 - 100SHIKI

画像のURLを指定すると、その画像をZoom.it側で取り込んで、表示できるようになる。
Zoom.it側で取り込むので、見るときはZoom.itの発行するURLで見るか、埋め込み用のJavaScriptを自分のサイトに埋め込んで見る。

画像のファイルサイズは無制限のようだ。(参考:Zoom.it - FAQ
Web公開用画像の外部ストレージサービスとしても使えるのかな...!

そしてこれ、画像だけでなく、実はWebページのキャプチャもしてくれる。URLとして、画像のURLの代わりにWebページのURLを入力するだけ。
UTF-8のページなら日本語でも問題なくキャプチャできた。(Shift_JISの場合は文字化けした。)

注意点としては、一度Zoom.itに取り込ませた画像は削除も変更もできない。「あなたがそのURLを公開しない限りは見つかることはないから大丈夫だよ」(Zoom.it - FAQ)と言われても、公開してしまったら後で困るかもしれないので慎重に?

これを作ったMicrosoftのLive LabsはBing部門に吸収された(参考:Microsoft Live Labs)ようだが、今後Zoom.itはどうしていくつもりなんだろう?
FlickrのようなCGMとして展開していかないのかな。


ところでZoom.itはGoogle Analyticsが仕込んである。MSも自前でアクセス統計を持ってなかったっけ?

2010年5月18日火曜日

PHPで 画像をdataスキーム URI化して表示するサンプル

使いどころは思いつかないがメモしておく。

$path = 'path/to/target.gif';

$uri = 'data:' . mime_content_type($path) . ';base64,';
$uri .= base64_encode(file_get_contents($path));

echo '<img src="' . $uri . '" />';

参考:php :: gif画像をbase64エンコードしてimgタグで表示する :: ウェブデザイナーの日記

PHPで画像ファイルの Mime-Type (Content-Type)を取得する方法

4つ見つけた。


getimagesizeを使う方法

$info = getImageSize($path);
echo $info['mime'];
PHPのGD拡張が必要。
2行になってしまってちょっと冗長か。



exif_imagetypeを使う方法
echo image_type_to_mime_type(exif_imageType($path));
前提としてPHPのExif拡張が有効になっている必要あり。(参考:PHP: インストール手順 - Manual
今度は横に冗長だ。



mime_content_typeを使う方法
echo mime_content_type($path);
シンプルで良いのだが、なぜか非推奨。
(環境によってはmime_content_typeが無い場合もある?)



Fileinfoオブジェクト(FInfoクラス)を使う方法
$info = new FInfo(FILEINFO_MIME_TYPE);
echo $info->file($path);
PHP5.3以降で使える。それ以前はPECL拡張だった(参考:PHP: インストール手順 - Manual
ちょっと大袈裟な気がするが、PHP5.3以降ではこれが推奨されるようだ。

でもクラス名はFileInfoにすべきだった?

2009年12月15日火曜日

PHPで GDを使って画像ファイルに文字列を書き込む例

とりあえずよく使いそうな機能はこんなとこか。
楕円書いたりいろいろできるみたいだけど、使うかな?
四隅を角丸にしたいかも...

<?php
$string = 'こんにちはこんにちは!';
$fontSize = 12;
$padSize = 10;
$angle = 0; //角度を指定できる
$fontPath = 'C:/WINDOWS/Fonts/MSGOTHIC.TTC'; //Windowsの場合

try {
//文字列の大きさを取得 http://jp2.php.net/imageTtfBBox
$box = imageTtfBBox($fontSize, $angle, $fontPath, $string);
if ($box === false) {
throw new Exception('imageTtfBBox()失敗');
}
$boxWidth = abs($box[2] - $box[0]);
$boxHeight = abs($box[7] - $box[1]);

//キャンバス生成 http://jp2.php.net/imageCreateTrueColor
$width = $boxWidth + $padSize * 2;
$height = $boxHeight + $padSize * 2;
$img = imageCreateTrueColor($width, $height);
if ($img === false) {
throw new Exception('imageCreateTrueColor()失敗');
}

//背景色と文字色をそれぞれ造る
// http://jp2.php.net/imageColorAllocate
// http://jp2.php.net/imageColorAllocateAlpha (透過の場合)
$red = 0xFF;
$green = 0x00;
$blue = 0x00;
$bgColor = imageColorAllocate($img, $red, $green, $blue);
if ($bgColor === false) {
throw new Exception('imageColorAllocate()失敗');
}
$red = 0xFF;
$green = 0xFF;
$blue = 0xFF;
$alpha = 20; //0~127。127は完全に透明
$textColor = imageColorAllocateAlpha($img, $red, $green, $blue, $alpha);
if ($textColor === false) {
throw new Exception('imageColorAllocate()失敗');
}

//キャンバスに色を塗る http://jp2.php.net/imageFill
$startX = 0;
$startY = 0;
if (!imageFill($img, $startX, $startY, $bgColor)) {
throw new Exception('imageFill()失敗');
}

//文字を書く http://jp2.php.net/imageTtfText
$startX = $padSize;
$startY = $boxHeight + $padSize; //左下の座標を指定する
if (!imageTtfText($img, $fontSize, $angle, $startX, $startY, $textColor, $fontPath, $string)) {
throw new Exception('imageChar()失敗');
}

//出力(第2引数にファイルパスを渡すとファイルに保存する)
$type = 'gif';
header('Content-type: image/' . $type);
switch ($type) {
case 'gif': // http://jp2.php.net/imageGif
$result = imageGif($img);
break;
case 'jpeg': // http://jp2.php.net/imageJpeg
$quality = 100; //0~100。大きいほど高品質。デフォルトは75
$result = imageJpeg($img, null, $quality);
break;
case 'png': // http://jp2.php.net/imagePng
$quality = 0; //0~9。小さいほど高品質
$result = imagePng($img, null, $quality);
break;
}
if (!$result) {
throw new Exception('出力失敗');
}
} catch (Exception $e) {
header('Content-type: text/html');
echo $e->getMessage();
}

//後始末 http://jp2.php.net/imageDestroy
if ($img && !imageDestroy($img)) {
throw new Exception('imageDestroy()失敗');
}

2009年12月2日水曜日

もう一歩踏み込んでGoogle Maps APIを使いこなすための12の参考サイト

(2010/09/02:情報が古くなっていたので全面的に改定)


Google Codeにあるもの(全て英語)

Google Maps JavaScript API V2 Reference - Google Maps JavaScript API V2 - Google Code

  • Google Maps API V2(Version 2)のリファレンス
  • V2は既にDeprecatedだが、V3にはまだ無い機能もあるので場合によってはV2が必要になる
  • 日本語のリファレンスはどこにいった?(以前からUpdateが追いついていなかったが...)

Google Maps Javascript API V3 Reference - Google Maps JavaScript API V3 - Google Code
  • Google Maps API V3 (Version 3)のリファレンス
  • V2には無かった円を描く機能がある

gmaps-utility-library-dev - Project Hosting on Google Code

google-maps-utility-library-v3 - Project Hosting on Google Code
  • Google Maps API V3のための準公式プラグイン集
  • だいぶ増えてきた
  • Google Maps API V3にはまだ無いOverview Controlを追加するプラグインもある

gmaps-api-v3-googlebar - Project Hosting on Google Code
  • Google Maps API V3にはまだ無いGoogleBar(Local Search Control、検索窓)を追加するプラグイン

google-maps-icons - Project Hosting on Google Code

Dynamic Icons - Google Chart Tools / Image Charts (aka Chart API) - Google Code
  • Google Chart APIの、動的にアイコンを生成する機能
  • 生成したアイコンはGoogle Mapsのマーカー画像として使える

gmaps-api-issues - Project Hosting on Google Code
  • Google Maps APIへの要望やバグ報告など

(おまけ)
Google Mapsの中心人物だったPameraさんのGoogle Code上のプロジェクト一覧
pamela.fox - Project Hosting on Google Code



その他


Google Maps 活用講座 - GoogleマップAPIの使い方を分かりやすく解説!
  • 初心者から上級者まで参考になりそう

Google Mapsをほどよくカスタマイズしてお手軽に表示 - Google Mapper [ゼロと無限の間に]
  • Google Maps API V2をサクッと使うためのプラグイン

Google Maps API V3を使って地図をお手軽に表示 - Google Mapper V3 [ゼロと無限の間に]
  • Google Maps API V3をサクッと使うためのプラグイン

2009年11月6日金曜日

JavaScriptで画像の大きさを縮小する方法

半分にするならこんな感じ。

<img src="test.jpg" alt="test" onload="this.width /= 2" />


最大値を決めてそれ以下になるようにするならこんな感じ。
<img src="test.jpg" alt="test" onload="this.width = Math.min(this.width, 100)" />


widthを変えれば勝手にheightも同じ比率で変わってくれるようだ。
Firefox3.5とIE7のみで確認。

Safariだけ img要素の onloadの動きが違う

動的にsrc属性の値を変えた時、かつ変更前と変更後のsrc属性の値が同じ場合にonloadが実行されるかどうかが違う。
IE(7)、Firefox(3.5)ではonloadが実行されたが、Safari(4)では実行されなかった。


テスト用コード

<img src="test.jpg" alt="test"
 onload="alert('Loaded!')"
 onclick="this.src = 'test.jpg'" />


load時に"Loaded!"が表示されるのは同じだが、クリックした時にsrc属性に同じ値をセットしたタイミングで、Safariだけはonloadが走らない。
src属性にセットする値が元の値と別ならば、Safariでもonloadが走る。

こんな感じならSafariでもonloadが走る。
<img src="test.jpg" alt="test"

 onload="alert('Loaded!')"

 onclick="this.src = 'test2.jpg'" />




Safari曰く、「変わってないからloadしてない、だからonloadではない」そうだ。(推測)

2009年9月24日木曜日

PNGの画像を IE6で透過にするライブラリ調査メモ

IE6では透過PNGが透過しない。それを無理やり透過させてしまうJavaScriptライブラリを調べたメモ。





DD_belatedPNGが一番良さそうかな?


参考:
ITキヲスク | IE6で透過pngを表示させるオススメscript、「DD_belatedPNG.js」

2009年8月28日金曜日

prototype.jsと script.aculo.usを使って一定時間で画像を入れ替えるサンプル

JavaScriptで画像を定期的に入れ替え。かつエフェクト効果を付けたい。
コマンド一発で済みそうなのを軽く探してみたけど、要件を満たすライブラリが見つからなかった。で、自分で書いたらこうなった。
諸事情によりprototype.js系にした。

需要はありそうだと思ったけど、そうでもないのかな?

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/prototype/1.6.0.3/prototype.js"></script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/scriptaculous/1.8.2/scriptaculous.js"></script>

<script type="text/javascript">
var urls = ["foo.jpg", "bar.gif"]
var i = 0;

Event.observe(window, "load", function() {
 var img = $("img");

 setInterval(function() {
  img.visualEffect("Fade", {duration: 1});
  setTimeout(function() {
   img.src = urls[i];
   i++;
   if (i == urls.length) {
    i = 0;
   }
   img.visualEffect("Appear", {duration: 1});
  }, 1500);
 }, 4000);
}, true);
</script>

参考:
 script.aculo.us リファレンス
 prototype.js リファレンス
 Developer's Guide - Google AJAX Libraries API - Google Code

2009年2月11日水曜日

Photoshopで既存のファイルに別の画像ファイルを取り込む方法

初めてPhotoshopに触れた。WindowsのペイントツールやFlash(Playerではなく編集ツールの方)みたいに使えるかと思っていたが、Ctrl+C/X/Vが使えなかったりして使い勝手が全然違う。
既存のPhotoshopのファイルに別の画像ファイルを取り込む方法すら分からない。

哲さんの雑記帳: Photoshop CS2で2枚の写真を連結して、1枚の写真にする方法です。 JTrimですと簡単に出来ますが、あえてPhotoshopで挑戦してみました。(タイトル長い)を参考にしてやった分かった。

Windowを隣に並べてドラッグ&ドラッグすると。

さすがMac出身のソフト。マウスがメインか。

Dropboxの可愛い画像いろいろ

1. 新規会員登録後に送られてくるメールに付いている画像





2. 有料会員登録時に送られてくるメールに付いている画像

こちらで見られる → Dropboxを有料プランして良かったこと悪かったこと:[mi]みたいもん!

3. ページが見つからない場合(404 Not Found)の画像
4. エラー画面
こちらで → DropBoxのエラー画面 - SIMPLE*SIMPLE ~ ウェブ職人のための小粋なネタ帳 ~

2008年10月25日土曜日

携帯電話関連の日本製Apacheモジュール

mod_ktai

携帯サイトの場合、キャリア・機種によって絵文字の出力、表示可能データ量、画面の大きさなどが異なる為、キャリア・機種判別、絵文字の出し分け等、携帯サイト向けの知識が不可欠です。
mod_ktaiを使用すると、それらの処理を簡単に行なうことが可能です。
参考:

 ke-tai.org > Blog Archive > ゆめみのmod_ktaiがとうとうリリース、しかも無償利用が可能

 オープンソース研究室: mod_ktaiを試してみました




mod_chxj

国内の主要携帯(3キャリア)向けコンテンツ変換ミドルウェアをApache2.x用のモジュールとして作成します。
CHTMLや通常のHTMLで作成したコンテンツを出力時にUserAgentを見てそれぞれの端末用に変換します(画像はJPG、GIF、PNGからJPG、GIF、PNG、BMPへ)。
QRコード生成機能付。
参考:ke-tai.org > Blog Archive > 携帯向け自動変換用Apacheモジュール「mod_chxj」が0.10系にバージョンアップ



mod_cidr_lookup

mod_cidr_lookupは、アクセスしてきたクライアントのIPアドレスが、起動時に読み込んでおいたCIDRブロック群のいずれかにマッチするかどうかを判別するためのモジュールです。
参考:DSAS開発者の部屋:ケータイやクローラの判別などに使えるmod_cidr_lookupを公開しました

2008年4月26日土曜日

OpenCV用の PHPライブラリ 3つ

探したら3つあった。


Linux (CentOS)に OpenCVをインストールする方法

yumでインストールできるらしいが、やり方が分からなかったので地道にやる。
tarの最新版のバージョンはSourceForgeのLinux用tarのDownloadページで確認。

wget http://nchc.dl.sourceforge.net/sourceforge/opencvlibrary/opencv-1.0.0.tar.gz
tar xvzf opencv-1.0.0.tar.gz
cd opencv-1.0.0

# 文字化け解消。viで開いて1137行目の文字化け文字を削除
vi cvaux/include/cvaux.h

# makeにはけっこう時間がかかる。
./configure
make
make install

# ライブラリのパス設定。viで新規ファイルを作り、「/usr/local/lib」とだけ記述して保存。
vi /etc/ld.so.conf.d/opencv.conf
ldconfig

export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:${PKG_CONFIG_PATH}


参考:
 OpenCV のインストール < 見やすくて分かりやすい
 共有ライブラリをシステムに認識させるには < ライブラリのパス設定について

2008年3月19日水曜日

特選:ちょっと変わった画像関連のJavaScript 16個

skuare.net : 画像関連 アーカイブから選別した。(←それにしても、このサイトのJavaScriptデータは物凄いことになってる。)


ブログ アーカイブ

tags