이미지의 모든 색상에 "하나 추가"


23

이 이미지를 가져와 모든 색상을 16 진수마다 하나씩 추가하면됩니다. 예를 들어, #49de5f될 것입니다 #5aef60합니다 (로 9에 루프 a, 그리고 fA를 반복 0.)

색상 # 49de5f색상 # 5aef60

이것은 또한 모든 루프가 다시 돌아 가기 때문에 모든 흰색 ( #ffffff)이 검은 색 ( #000000) 이 된다는 것을 의미 하지만 모든 검은 색은 더 밝은 검은 색 ( )이됩니다.f0#111111

색상 # 000000색상 # 111111

스코어링은 질문 이므로 사용 된 최소 바이트 수를 기반으로합니다 .

아래 이미지를 코드의 입력 이미지로 사용하고 코드의 출력 이미지를 답변에 넣으십시오.

입력 이미지

원하는 경우이 다른 무지개 이미지를 사용할 수도 있습니다.

다른 선택적 입력 이미지


하드웨어 / FPGA 설계 용으로 설계된 프로그래밍 언어를 사용하려는 경우 입력 / 출력 형식에 대해 어떤 가정을 할 수 있습니까?
복원 모니카-ζ--

@hexafraction 기본적으로 파일 또는 16 진수 코드 iirc로 취할 수 있다고 생각합니다.
Rɪᴋᴇʀ


5
@Peanut, ef바이트 를 포함하는 테스트 케이스를 갖는 것이 좋을 것입니다 ( 17을 추가하고 mod 256을 취할 때 발생 f0하는 것과는 반대로 00).
Martin Ender 2016 년

2
샘플 입력 만 제공하는 것이 아니라 샘플 출력용 이미지를 게시해야합니다. 그 외에는 매우 멋진 첫 번째 게시물입니다! 사이트에 오신 것을 환영합니다!
DJMcMayhem

답변:


5

파이크, 17 13 바이트

.Fh16j%ijcjs 8{

여기 사용해보십시오!

.F            - for i in deep_for(input):
  h16%        -    (i+1)%16
          +   -   ^+V
      i16+    -    (i+16)
           8{ -  unset_bit(8, ^)

3 차원 정수 배열로 입력을 받아서 같은 형식으로 출력

레인보우 (No unicorn :()


출력 이미지를 제공 할 수 있습니까?
haykam

7

Mathematica, 78 바이트

Image@Apply[16#+#2&,Mod[IntegerDigits[#~ImageData~"Byte",16,2]+1,16]/255,{3}]&

이미지 객체를 가져 와서 반환합니다 (이미지 객체를 만들려면 이미지를 Mathematica에 붙여 넣기 만하면됩니다).

테스트 케이스의 결과 :

여기에 이미지 설명을 입력하십시오

정수 채널 값의 3D 배열로 입력출력받으면 51 바이트로 줄어 듭니다 .

Apply[16#+#2&,Mod[IntegerDigits[#,16,2]+1,16],{3}]&

그러나 이러한 메타 게시물은 아직 많은 지원을하지 않으므로 지금은 78 바이트 버전을 사용하고 있습니다.


4

Verilog, 220 바이트 :

  • 프로그램은 치수가있는 RGB 픽셀 값의 배열로 입력을받을 수 있습니다
  • 프로그램은 치수가있는 RGB 픽셀 값의 배열을 통해 출력 될 수 있습니다

차원을 제공하는 방법과 배열을 한 번에 스트리밍하거나 제공해야하는지 여부는 현재 명확하지 않습니다. 클럭 신호 (전체 이미지가 처리 된 후 유효 데이터 플래그가 낮아짐)를 사용하여 한 번에 8 비트를 스트리밍하고 크기를 32 비트 정수로 입력 / 출력합니다.

module a(input[31:0]w,input[31:0]h,input[7:0]d,input c,output[31:0]W,output[31:0]H,output reg[7:0]D,output reg v=0);assign W=w;assign H=h;reg[65:0]p=1;always@(posedge c) begin v<=(p<3*w*h); p<=p+v; D<=d+17; end endmodule

4

파이썬, 226 바이트

이제 유효합니다!

베개 라이브러리를 사용하십시오.

from PIL import Image
m=Image.open(input()).convert("RGB")
for y in range(m.size[1]):
 for x in range(m.size[0]):
    t=m.getpixel((x,y))
    h=t[0]+(t[1]<<8)+(t[2]<<16)+1118481
    m.putpixel((x,y),(h&255,h>>8&255,h>>16&255))
m.show()

산출:산출

9 바이트를 절약 한 @TuukkaX에게 감사합니다!
18 바이트를 절약 한 @ mbomb007에게 감사합니다!


0xFF대신 사용해야 255합니까?
Yytsi 2016 년

@TuukkaX Woops 감사합니다
TuxCrafting

거기에 하나 더 0xFF있습니다 : D
Yytsi

라고 말하면 더 많은 바이트를 절약 할 수 있다고 생각합니다 from PIL import*. 또한 그 후에 Image.open바로 변경할 수 있다고 생각 open합니다.
Yytsi 2016 년

@TuukkaX 예,로 변경할 수 있지만 변경할 from PIL import*수 없습니다Image.open
TuxCrafting

1

Dyalog APL , 21 15 바이트

프로그램은 RGB 픽셀 값의 행렬로 출력 될 수 있습니다

출력이 같은 형식 일 수 있다고 가정합니다.

새로운 솔루션은 [[ r , g , b , r , g , b ], [ r , g , b ,…

16⊥16|1+16 16⊤⎕

설명

숫자 입력
16 16⊤을 2 자리 숫자 16으로 변환 16을
1+더합니다 1, 즉 0 → 1, 1 → 2, 15 → 16
16|계수 16, 즉 16 → 0
16⊥을 밑 16에서 변환

      ⊢m←2 6⍴90 239 96 255 255 255 0 0 0 239 239 239
90 239 96 255 255 255
 0   0  0 239 239 239
      16⊥16|1+⎕⊤⍨2/16
⎕:
      m
107 240 113   0   0   0
 17  17  17 240 240 240

이전 21 바이트 솔루션은 [[ "RRGGBB", "RRGGBB"], [ "RRGGBB",…

{n[16|1+⍵⍳⍨n←⎕D,⎕A]}¨

⎕IO←0많은 시스템에서 기본값 인 Needs가 필요 합니다.

설명

{... 각 RGB 6 - 문자 문자열을,로 대표 : 그리고 어떻게
n←⎕D,⎕A할당 "0 ... 9A를 ... Z를"로 N
⍵⍳⍨ 에서 개별 문자의 인덱스를 찾을 수 없음
1+ , 인덱스에 1을 추가 즉, 0 → 1, 1 → 2 → 15 16
16|계수 16, 16 → 0, 즉
n[... ]그에 인덱스 사용을 N

      f←{n[16|1+⍵⍳⍨n←⎕D,⎕A]}¨ 
      ⊢p←2 2⍴'5AEF60' 'FFFFFF' '000000' 'EFEFEF'
┌──────┬──────┐
│5AEF60│FFFFFF│
├──────┼──────┤
│000000│EFEFEF│
└──────┴──────┘
      f p           
┌──────┬──────┐
│6BF071│000000│
├──────┼──────┤
│111111│F0F0F0│
└──────┴──────┘

1

C- 114 113 70 66 61 72 67 바이트

다음은 코드입니다 ( Martin Ender 의 테스트 케이스 지원 (60b 제외)).

main(c,b){for(;~(b=getchar());putchar(c++<54?b:b+16&240|b+1&15));}

그리고 여기에 덜 난독 화 된 버전이 있습니다.

main( c, b ) //Defaults to int
{
    //Get characters until EOF occurs
    //Copy first 54 bytes of header, later add 1 to each hexadecimal digit
    for ( ; ~( b = getchar( ) ); putchar( c++ < 54 ? b: b + 16 & 240 | b + 1 & 15 ) ); 
}

컴파일하고 실행 gcc -o color colorgolf.c && cat a.bmp | ./color > b.bmp

이 코드는 비트 맵 작업을 지원합니다 . png파일을 로 변환하기 위해 bmp다음 명령을 사용했습니다.convert -flatten -alpha off png.png a.bmp

코드는 bmp헤더의 길이가 54 바이트 라고 가정합니다. 이 경우 작동하지만 신중하게 무언가를 깨뜨리지 않을지는 확실하지 않습니다.

또한 이것은 무지개입니다.
지금 슬프다 ... :(


1

자바 142 바이트

public BufferedImage translateColor(BufferedImage image){
  for(int i=-1;++i<image.getWidth();)
    for(int j=-1;++<image.getHeight();)
      image.setRGB(i,j,image.getRGB(i,j)+1118481);
  return image;
}

골프 :

BufferedImage t(BufferedImage i){for(int x=-1;++x<i.getWidth();)for(int y=-1;++y<i.getHeight();)i.setRGB(x,y,i.getRGB(x,y)+1118481);return i;}

우선 PPCG에 오신 것을 환영합니다! 코드 골프 코드는 i매개 변수와 for 루프 모두를 사용 하므로 매개 변수를 다음과 같이 변경합니다 a. 또한의 int 앞 부분 을 제거하고 에 j추가하면 골프를 더 즐길 수 있습니다 int i. 따라서이 좋아 : BufferedImage t(BufferedImage a){for(int i=-1,j;++i<a.getWidth();)for(j=-1;++j<a.getHeight();)a.setRGB(i,j,a.getRGB(i,j)+1118481);return a;}. 또한이 게시물을보십시오 : Java의 골프 팁 . :)
Kevin Cruijssen

색상을 올바르게 설정하지 않았습니다. RGB 값에 0x111111을 추가하면 한 16 진수 위치에서 다음 16 진수로 오버플로 될 수 있습니다. 예를 들어, # 49de5f는 # 5aef70이 아니라 # 5aef60이되어야합니다.
kamoroso94 18

0

R, 302 바이트

완벽한 것과는 거리가 멀지 만 여기에 간다 :

a<-as.raster(imager::load.image(file.choose()));l=letters;n=as.numeric;d=a;f=function(x){if(suppressWarnings(is.na(n(x)))){if(x=="F")"0" else{l[match(x,toupper(l))+1]}}else{if(x==9)"A" else as.character(n(x)+1)}};for(o in 1:90){for(g in 1:200){for(h in 2:7){substr(d[o,g],h,h)<-f(substr(a[o,g],h,h))}}}

설명:

a<-as.raster(imager::load.image(file.choose()));  //chooses file
l=letters;n=as.numeric;d=a;                      //shortens some names and creates
                                                   duplicate variable to modify

f=function(x){                                //creates a function that takes in a
   if(suppressWarnings(is.na(n(x)))){            character type and checks whether it is
      if(x=="F")"0"                              a number or letter.
      else{l[match(x,toupper(l))+1]}}            Returns the converted letter or number.                               
   else{                                   
      if(x==9)"A"                         
      else as.character(n(x)+1)}         
};                                      

for(o in 1:90){                       //loops through every single hex digit and applies
   for(g in 1:200){                     the converting function, modifying the duplicate
      for(h in 2:7){                    variable. Now you have 2 images =D

         substr(d[o,g],h,h)<-f(substr(a[o,g],h,h))

      }
   }
}

아름다운 무지개

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.