画像関係の最近のブログ記事

コリスさんのブログの記事に、画像からカラーパレットを作成できるオンラインサービスというタイトルでのエントリーがあった。
以前自分が作ったカラーチップ作成のプログラムによく似ている。

Photoshop用のカラーチップデータをダウンロードできるのがこっちのすごいところ。

なるほどね。

□以前作ったプログラム
imagetips v2 http://sevenstyleweb.com/labo/imagetips/



PHPで画像をリサイズするという作業をよく行う(個人的に)のだけど、これまではjpeg画像でよくやってた。実際このサイトのphotoの部分も自作したPHPプログラムでサムネイルの作成を行っている。

ちなみに画像のリサイズをやるには、以下の方法(プログラムではなく概念)
1.画像を取得する
2.サイズを決める
3.imagecreatetruecolor(width,height)でキャンパスを用意する
4.用意したキャンパスにサイズを指定して、貼り付ける(表現が正しいかは不明)
5.保存する。

こんな方法で、jpeg画像ならすんなりいける。
しかーし!PNG画像、特に透過PNGの画像をこのやりかたでやってしまうと、透過部分が黒くなる。という現象がおきる。
なぜか?この理由は・・・
imagecreatetruecolor()関数で用意したキャンパスの背景は黒
というものあるからだ。
ほんじゃ、どうするかということだけど、色々調べたり質問したりしたら次のようなプログラム(おおまか)でいける。

$ori = imagecreatefrompng("hogehoge.png");
$ori_x = imagesx($ori);
$ori_y = imagesy($ori);

$new = imagecreatetruecolor($new_w,$new_h);
imagealphablending($new,false);
imageSaveAlpha($new,true);
$fillcolor = imagecolorallocatealpha($new,0,0,0,127);
imagefill($new,0,0,$fillcolor);
imagecopyresampled($new,$ori,0,0,0,0,$new_w,$new_h,$ori_x,$ori_y);

以上。
今までとの違いは、
imagealphablending($new,false);
imageSaveAlpha($new,true);
$fillcolor = imagecolorallocatealpha($new,0,0,0,127);
imagefill($new,0,0,$fillcolor);
この4行。
何をやっているのかというと、
imageSaveAlpha()関数を使えるように、描画モードをアルファチャネルが使えるように設定して、
実際にimageSaveAlpha()関数の実行で、保存できるように設定
$newに対して、透明色を用意して
$newキャンパスを透明色で塗りつぶす。
この作業をおこなって、該当PNG画像を貼り付ける(表現は勘弁)。

そうするとPNG画像でもちゃんと透過してくれるのです。よかったよかった。

imgtip.jpg





























以前に公開した、imagetipsのβ版。ちょっと機能を追加したのだ~。それは作成されたカラーチップをじゃじゃーんと並べてみた。んで、ちゃんとそのコードも記載。これまたPHPで制御しております。

あそんでみてくださいな。


次の追加機能はなんにしようかな。。。

ココからどうぞ。http://sevenstyleweb.com/imagetips/
imgtips.jpg
画像をアップロードして、ボタンを押すと、その画像をカラーチップみたいなのでダラーっとしてみるものを作成しました。まだ機能としては不足な部分やシステムの障害があるかもしれないので、それは勘弁。

もし何かご意見などありましたら、sevenina@sevenstyleweb.comまで。

レンタルサーバなので、解析するのに時間がかかるかもしれませんので、そのときは気長に待っちゃってください。とりあえずβ版ってことで公開します。

モザイク画像はtableで作っているので、保存はできませんので、あしからず。

□こちらからどうぞ。
http://sevenstyleweb.com/imagetips/index.php

    follow me on Twitter

    このアーカイブについて

    このページには、過去に書かれたブログ記事のうち画像関係カテゴリに属しているものが含まれています。

    前のカテゴリは変数です。

    最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。