Advertisement
Guest User

Untitled

a guest
Apr 21st, 2019
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.05 KB | None | 0 0
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3.  
  4. #define MAX 1119756
  5. #define latime 748
  6. #define inaltime 499
  7. unsigned char buffer[MAX];
  8. unsigned char buff[inaltime][3*latime];
  9. unsigned char aux;
  10.  
  11. void inversare_img(int i, int j){
  12. //printf("%d %d\n",buffer[0],buffer[1]);
  13. for(i=0;i<MAX/2;i+=3){
  14. for(int j=0;j<3;j++){
  15. aux=buffer[i+j];
  16. buffer[i+j]= buffer[MAX - i+j];
  17. buffer[MAX-i+j]=aux;
  18. }
  19. }
  20. //printf("%d %d\n",buffer[MAX-1],buffer[MAX]);
  21.  
  22. }
  23.  
  24. void color_swap(int i){
  25. for(i=0;i<MAX;i++){
  26. if( (i+1)%3 == 0 || (i+2)%3 == 0)
  27. buffer[i]=255-buffer[i];
  28. }
  29. }
  30.  
  31. void negativ(int i){
  32. for(i=0;i<MAX;i++){
  33. buffer[i]=255-buffer[i];
  34. }
  35. }
  36.  
  37. void negativ_sc(int i){
  38. for(i=0;i<MAX;i+=3){
  39. buffer[i]=255-buffer[i];
  40. }
  41. }
  42.  
  43.  
  44. void old(int i){
  45. for(i=0;i<MAX;i++){
  46. if((i+1) % 3 == 0 || (i+2) % 3 == 0)
  47. buffer[i]=128;
  48. }
  49. }
  50.  
  51.  
  52. void blur_slab(int i){
  53. for(i=3*(latime+1);i<MAX - (3*(latime+1)); i+=3){
  54. buffer[i]=((int)(buffer[i+3]+buffer[i-3]))/2;
  55. }
  56. }
  57. void blur_puternic(int i){
  58. for(i=3*(latime+1);i<MAX - (3*(latime+1)); i+=3){
  59. buffer[i]=((int)(buffer[i+3]+buffer[i-3]))/2;
  60. buffer[i]=((int)(buffer[i-3]+buffer[i+3]+buffer[i+3*latime]+buffer[i-3*latime]+buffer[i+3*latime+3]+buffer[i+3*latime-3]+buffer[i-3*latime+3]+buffer[i-3*latime-3]))/8;
  61. }
  62. }
  63.  
  64. void mut_in_matr(int m, int n, int j){
  65. j=0;
  66. for(m=0;m<inaltime;m++){
  67. for(n=0;n<(3*latime);n++){
  68. buff[m][n]=buffer[j++];
  69. }
  70. }
  71. printf("%d %d %d %d",buff[0][0],buffer[0],buff[inaltime-1][3*latime-1],buffer[MAX-1]);
  72. }
  73.  
  74. void mut_in_vec(int m,int n,int j){
  75. j=0;
  76. for(m=0;m<inaltime;m++)
  77. for(n=0;n<3*latime;n++)
  78. buffer[j++]=buff[m][n];
  79. }
  80.  
  81. void blur_ponderat(int i, int j){
  82. for(i=1;i<inaltime-1;i++){
  83. for(j=3;j<(3*latime)-3;j+=3){
  84.  
  85. buff[i][j]=((int)(5*buff[i-1][j]+5*buff[i+1][j]+5*buff[i][j+3]+5*buff[i][j-3]+3*buff[i-1][j-3]+3*buff[i-1][j+3]+3*buff[i+1][j-3]+3*buff[i+1][j+3]))/32;
  86.  
  87. }
  88. }
  89. }
  90.  
  91.  
  92.  
  93. int main(){
  94. FILE *f,*g;
  95. int i,j,m=0,n=0,opt,c=0;
  96. f=fopen("/home/mihai/Desktop/Test.yuv","rb");
  97. g=fopen("/home/mihai/Desktop/Test2.yuv","wb");
  98.  
  99. do{
  100.  
  101. fread(buffer,sizeof(buffer),1,f);
  102. printf("\n\n1.Inversare imagine\n2.Schimbare culoare\n3.Negativ_1\n4.Negativ_2\n5.Basic Blur\n6.Blur Aritmetic\n7.Blur ponderat\n8.Reset Img\n0.Iesire\nAlege:");
  103. scanf("%d",&opt);
  104. switch(opt){
  105. case 1:{
  106. inversare_img(i,j);
  107. break;
  108. }
  109. case 2:{
  110. color_swap(i);
  111. break;
  112. }
  113. case 3:{
  114. negativ(i);
  115. break;
  116. }
  117. case 4:{
  118. negativ_sc(i);
  119. break;
  120. }
  121. case 5:{
  122. blur_slab(i);
  123. break;
  124. }
  125. case 6:{
  126. blur_puternic(i);
  127. break;
  128. }
  129. case 7:{
  130. mut_in_matr(m,n,j);
  131. blur_ponderat(i,j);
  132. mut_in_vec(m,n,j);
  133. break;
  134. }
  135. case 8:{
  136. fread(buffer,sizeof(buffer),1,f);
  137. break;
  138. }
  139. default:{
  140. printf("Comanda gresita\n");
  141. break;
  142. }
  143. case 0:{
  144. printf("Ai iesit");
  145. break;
  146. }
  147.  
  148.  
  149. }
  150. fwrite(buffer,sizeof(buffer),1,g);
  151. }while(opt!=0);
  152. return 0;
  153. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement