本文へスキップ
からだにいいもの

Rのトピックスを中心に『まだ、まだ、知らない、役に立つ情報?』を発信します。

Rでお遊び:「シャーロット」第2話「絶望の旋律」バナー広告のカラーコード

アニメ「シャーロット」、第2話「絶望の旋律」のバナー広告を見かけました。どうも、毎週広告を掲載?するようです。せっかくなので、広告を見かけたら画像のカラーカードを解析し紹介していきたいと思います。

第2話はtwitterで話題になった「高松」(本当は高城)でした。乙坂はいつ登場するのやら。勝手に応援していますシャーロット。第2話の放送が楽しみです。

バナー広告 スクリーンショット

バナー2

からだにいいもので解析した他の「シャーロット」カラーコード <広告解析> ・第1話バナー https://www.karada-good.net/analyticsr/r-132/

<各話ごとの印象に残った10シーンの解析> ・第1話「我 他人を 思う」 https://www.karada-good.net/analyticsr/r-135/ ・第2話「絶望の旋律」 https://www.karada-good.net/analyticsr/r-145/

シャーロットHP:http://charlotte-anime.jp/

TVアニメ「Charlotte(シャーロット)」公式サイト

紹介コードはR version 3.2.0で動作を確認しています。

結果

<使用カラーTop200のパレット画像> 放送開始記念バナー広告より色使いが暗いのではと思います。

charlotteAd2

<使用カラーTop200のカラーコードテーブル> モバイルの方はこちらからご覧いただくと見やすいです。 別ウィンドウで開く

スポンサーリンク

実行コマンドの紹介

下記コマンドを実行してください。詳細はコメントを確認してください。


#パッケージのインストール
#install.packages(c("png", "jpeg", "colorspace", "DT"))

#パッケージの読み込み
library("tcltk")
library("png")
library("jpeg")
library("progress")
library("colorspace")

#読み込みフォルダを選択
FoldPath <- paste(as.character(tkchooseDirectory(title = "読み込みフォルダを選択"), sep = "", collapse =""))

#フォルダ内のアイテムを取得
ItemList <- list.files(path = FoldPath)

###S:フォルダ内の全画像からカラーコードを取得#####
#データ格納用の変数を初期化
MasterRGBCol <- NULL

#アイテム数の取得
ItemVol <- length(ItemList)

#プログレスバーの設定
pb <- progress_bar$new(format = "  処理状況 [:bar] :percent",
                       total = ItemVol, clear = FALSE, width= 60)

for(i in seq(ItemVol)){
  #プログレスバーの表示
  pb$tick()

  #Imageファイルの読み込み
  selectAImage <- paste(FoldPath, "/", ItemList[i],
                        sep = "", collapse = "")

  #jpeg/png/gifファイルの判断
  if (unlist(strsplit(ItemList[i], "\\."))[2] == "png"){

    Image <- readPNG(selectAImage)
    LABCol <- as(RGB(as.vector(Image[,, 1]), as.vector(Image[,, 2]), as.vector(Image[,, 3])), "LAB")
    RGBCol <- cbind(LABCol@coords[,1:3], hex(LABCol))

  }else{

    Image <- readJPEG(selectAImage, native = FALSE)
    LABCol <- as(RGB(as.vector(Image[,, 1]), as.vector(Image[,, 2]), as.vector(Image[,, 3])), "LAB")
    RGBCol <- cbind(LABCol@coords[,1:3], hex(LABCol))

  }

  #マスターデータのデータフレーム化
  RGBCol <- as.data.frame(RGBCol)

  #特定の色を削除。白色を削除
  RGBCol <- subset(RGBCol, RGBCol[, 4] != "#FFFFFF")

  #カラーコードを文字列化
  RGBCol[, 4] <- as.character(RGBCol[, 4])

  #画像で使用されているカラーコードを集計
  CountColor <- as.data.frame(table(RGBCol[, 4]))

  #集計データをカラーコードで並び替え
  CountColor <- CountColor[order(CountColor[, 1], decreasing = TRUE), ]

  #マスターデータの重複を削除
  RGBCol <- RGBCol[!duplicated(RGBCol[, 4]),]

  #マスターデータをカラーコードで並び替え
  RGBCol <- RGBCol[order(RGBCol[, 4], decreasing = TRUE),]

  #結合
  RGBCol <- cbind(formatC(i, width = 2, flag = "0"), ItemList[i], RGBCol, CountColor[, 2])

  #プロットデータの作成
  MasterRGBCol <- rbind(MasterRGBCol, RGBCol)

  #必要のないImage,LABCol,RGBColの削除
  rm(Image,LABCol,RGBCol)

}

#行名の付与
colnames(MasterRGBCol) <- c("NO", "ファイル名", "明度:l", "補色次元:a", "補色次元:b", "カラーコード", "出現数")

#ファイルの保存、解析画像数によってはファイルサイズが非常に大きい場合があります
#また、エクセルなどで読み込めないことがあるのでコメントアウトしています。
#setwd(paste(as.character(tkchooseDirectory(title = "保存場所を選択"), sep = "", collapse ="")))
#write.csv(MasterRGBCol, "分析結果.csv", fileEncoding = "CP932", eol = "\r\n")
###E:フォルダ内の全画像からカラーコードを取得#####

###データのプロット#####
#軸の設定
xRange <- seq(0, 1, by = 1/ItemVol)

#グラフ幅の設定
xWidth <- seq(1/ItemVol, 1, by = 1/ItemVol)

#プロット領域の作成
par(bg = "#2E2E2E")
#plot(0:max(c(xRange, xWidth)), 0:max(c(xRange, xWidth)), type = "n", axes = FALSE, xlab = "", ylab = "")
plot(0:1, 0:1, type = "n", axes = FALSE, xlab = "", ylab = "")
box()

#プログレスバーの設定
pb <- progress_bar$new(format = "  処理状況 [:bar] :percent",
                       total = length(ItemVol), clear = FALSE, width= 60)

#テーブル作成用のデータ格納用変数
TableDrowData <- NULL

for(k in seq(ItemVol)){
  #プログレスバーの表示
  pb$tick()

  #データの抽出
  Plot <- subset(MasterRGBCol, MasterRGBCol[, 2] == ItemList[k])

  #出現数で並び替えてTOP200を抽出
  Plot <- Plot[order(as.vector(Plot[, 7]), decreasing = TRUE),]
  Plot <- head(Plot, n = 200)

  #プロット内容の指定
  #明度で並び替え
  #行番号を指定することで並び替えの基準を変更できます
  #3行目"明度:l", 4行目"補色次元:a", 5行目"補色次元:b", 6行目"カラーコード"
  Plot <- Plot[order(as.vector(Plot[, 6]), decreasing = TRUE),]

  #テーブル作成用データ
  TableDrowData <- rbind(TableDrowData, Plot[, c(6, 7)])

  #データのプロット
  rasterImage(as.raster(Plot[, 6]),
              xRange[k], 0, xWidth[k], 1, interpolate = FALSE)

}

#色付きJavaテーブルの作成
#パッケージの読み込み
library("DT")

#HTMLファイルの保存場所を指定
setwd(paste(as.character(tkchooseDirectory(title = "保存場所を選択"), sep = "", collapse ="")))

#テーブル内容を降順で並び替え
TableDrowData <- TableDrowData[order(as.vector(TableDrowData[, 1]), decreasing = TRUE),]

#テーブルの作成
DataTable <- datatable(TableDrowData, rownames = FALSE, options = list(pageLength = 10, lengthMenu = c(5, 50, 100, 200)),
                       caption = 'シャーロット 第2話 カラーパレット', escape = FALSE)

#セルの色をパイプ"%>%"でつなげてformatStyleで設定します
DataTable <- DataTable %>% formatStyle('カラーコード',
                                       backgroundColor = styleEqual(TableDrowData[, 1], TableDrowData[, 1]))
#作成テーブルをhtmlで出力
saveWidget(DataTable, 'DataTable2.html')

少しでも、あなたのアニメ生活が充実しますように!!

スポンサーリンク
Prices and shipping availability may change. Please refer to the product page at time of purchase.
Content displayed on this site is provided by Amazon and may be updated or removed.
Amazon Associate, karada-good earns income through qualifying sales.