2010年6月13日日曜日

Web漫画と著作権

Web漫画の収集は続く。

公開されているWeb漫画を収集してファイルにし、自分のPCとかで見るのは著作権的には限りなく白に近いグレーっていうか、法的には白。

タダで公開しているWeb漫画の著作権は作者さんたちに帰属されるのは当然だが、そもそもPCで見れている段階でそのイメージはキャッシュに読み込まれているわけで、それを別のフォルダに移してしまうだけで違法だというのはおかしい。

しかし、作者さんたちからすると、たしかに気分的には良くないかもしれない。
そして、そのファイルをそのまま断りもなく公開してしまうのはグレー。さらにそれを売ってしまったら完全に黒だわな。
でも、引用なら、引用なら、法律内だ! ・・・・めんどうだからやらないけど。

というわけで、たくさん収集はしてますが、ここでそれを公開なんてなことはしませんぞ。

epub(iPadのiBooksで読める形式) 化して欲しいっていう作者さんがいたらやってもイイですけど。

ちなみに商用サイトのWeb漫画とかはシステム的にコピーしにくいように作ってはありますが、画面に表示されている段階でコピーできる。
画面をキャプチャして、あとはカッティングすればよい。

なので、カッティングのプログラム作ってみた。
C#ってなんてプログラミングが楽なんだろう。

コマンドラインのプログラムなのは、バッヂファイルとして実行できるようにするため。

C> imgcut imputfilename xOffset yOffset width height outputfilename

こんな感じで実行する。

で、ソースはこれ。エラー処理が甘いけどまぁいいや、面倒だし。


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Drawing;
using System.Drawing.Imaging;

namespace Imagecut
{
    class Program
    {
        static void Main(string[] args)
        {

            if (args.Length != 5 && args.Length != 6)
            {
                Console.WriteLine("use: imgcut imputfilename xOffset yOffset width height [outputfilename(png)]");
            }
            else if (System.IO.File.Exists(args[0]))
            {
                try
                {
                    Bitmap bmpSrc = new Bitmap(args[0]);            // ファイルを読み込む
                    Bitmap bmpNew;

                    int xOffset = int.Parse(args[1]);
                    int yOffset = int.Parse(args[2]);
                    int width = int.Parse(args[3]);
                    if (bmpSrc.Width < xOffset + width)
                    {
                        width = bmpSrc.Width - xOffset;
                    }
                    int height = int.Parse(args[4]);
                    if (bmpSrc.Height < yOffset + height)
                    {
                        height = bmpSrc.Height - yOffset;
                    }
                    string newFilePath;

                    Rectangle rect = new Rectangle(xOffset, yOffset, width, height);

                    bmpNew = bmpSrc.Clone(rect, bmpSrc.PixelFormat);
                    // 出力ファイル名
                    if (args.Length == 6)
                    {
                        newFilePath = args[5];
                        if (System.IO.File.Exists(args[5]))
                        {
                            newFilePath = args[5].Substring(0, args[5].Length - 4) + "00.png";
                        }

                    }
                    else
                    {
                        newFilePath = args[0].Substring(0, args[0].Length - 4) + "00.png";
                    }
                    Console.WriteLine(newFilePath);
                    bmpNew.Save(newFilePath, ImageFormat.Png);   // ファイルを保存

                    bmpNew.Dispose();   // リソースを解放
                    bmpSrc.Dispose();   // リソースを解放
                }
                catch
                {
                }
            }
            else
            {
                Console.WriteLine("file not found");
            }
        }
    }
}

0 件のコメント: