Resize Image On "Open image in new tab"

Support: Google(G+ blogspot picasa)\Tumblr\Twitter\weibo.com (And more...

As of 2015-10-09. See the latest version.

  1. // ==UserScript==
  2. // @name Resize Image On "Open image in new tab"
  3. // @name:zh-cn 右键在新标签中打开图片时显示最优化图像质量
  4. // @version 0.4.17
  5. // @description Support: Google(G+ blogspot picasa)\Tumblr\Twitter\weibo.com (And more...
  6. // @description:zh-cn 支持:谷歌(G+ blogspot picasa)、Tumblr、推特、新浪微博、腾讯微博、知乎、豆瓣
  7. // @run-at document-start
  8. // @match http://*.googleusercontent.com/*
  9. // @match https://*.googleusercontent.com/*
  10. // @match http://*.media.tumblr.com/*
  11. // @match https://*.media.tumblr.com/*
  12. // @match http://*.bp.blogspot.com/*
  13. // @match https://*.bp.blogspot.com/*
  14. // @match http://*.sinaimg.cn/*
  15. // @match https://*.sinaimg.cn/*
  16. // @match http://*.qpic.cn/*
  17. // @match http://*.twimg.com/*
  18. // @match https://*.twimg.com/*
  19. // @match http://*.zhimg.com/*
  20. // @match https://*.zhimg.com/*
  21. // @match http://*.douban.com/view/*
  22. // @match https://*.douban.com/view/*
  23. // @match http://*.doubanio.com/view/*
  24. // @match https://*.doubanio.com/view/*
  25. // @namespace https://greasyfork.org/users/2646
  26. // @copyright 2015+, CLE
  27. // ==/UserScript==
  28.  
  29. var url = document.location.toString();
  30. var m = null;
  31.  
  32. //google
  33. if( (m = url.match(/^(https?:\/\/\w+\.googleusercontent\.com\/.+\/)([^\/]+)(\/[^\/]+(\.(jpg|jpeg|gif|png|bmp|webp))?)$/i)) ) {
  34. if(m[2] != "s0") {
  35. document.location = m[1] + "s0" + m[3];
  36. }
  37. }
  38. else if( (m = url.match(/^(https?:\/\/\w+\.googleusercontent\.com\/.+=)(.+)$/i)) ) {
  39. if(m[2] != "s0") {
  40. document.location = m[1] + "s0";
  41. }
  42. }
  43.  
  44. //blogspot
  45. else if( (m = url.match(/^(https?:\/\/\w+\.bp\.blogspot\.com\/.+\/)([^\/]+)(\/[^\/]+(\.(jpg|jpeg|gif|png|bmp|webp))?)$/i)) ) {
  46. if(m[2] != "s0") {
  47. document.location = m[1] + "s0" + m[3];
  48. }
  49. }
  50.  
  51. //tumblr
  52. else if( (m = url.match(/^(https?:\/\/\d+\.media\.tumblr\.com\/.*tumblr_\w+_)(\d+)(\.(jpg|jpeg|gif|png|bmp|webp))$/i)) ) {
  53. if(m[2]<1280) {
  54. var ajax = new XMLHttpRequest();
  55. ajax.onreadystatechange=function() {
  56. if(ajax.status==200) {
  57. document.location = m[1] + "1280" + m[3];
  58. }
  59. }
  60. ajax.open("HEAD", m[1]+"1280"+m[3], true);
  61. ajax.send();
  62. }
  63. }
  64.  
  65. //性浪微博
  66. else if( (m = url.match(/^(https?:\/\/ww[\d]+\.sinaimg\.cn\/)([^\/]+)(\/.+)$/i)) ) {
  67. if(m[2] != "large") {
  68. document.location = m[1] + "large" + m[3];
  69. }
  70. }
  71.  
  72. //疼逊微博
  73. else if( (m = url.match(/^(http:\/\/[\w\d]+\.qpic\.cn\/.+\/)(\d+)$/i)) ) {
  74. if(m[2]<2000) {
  75. document.location = m[1] + "2000";
  76. }
  77. /*if(m[2]!=0) {
  78. document.location = m[1] + "0";
  79. }*/
  80. }
  81.  
  82. //twitter
  83. else if( (m = url.match(/^https?:\/\/\w+\.twimg\.com\/media\/([^\/:]+\.(jpg|jpeg|gif|png|bmp|webp))$/i)) ) {
  84. document.location = m[0] + ":large";
  85. }
  86. /*m = url.match(/^https?:\/\/\w+\.twimg\.com\/media\/([^\/:]+\.(jpg|jpeg|gif|png|bmp|webp))$/i);
  87. if(m) {
  88. document.location = m[0] + ":large?" + m[1];
  89. }
  90. m = url.match(/^(https?:\/\/\w+\.twimg\.com\/media\/([^\/]+\.(jpg|jpeg|gif|png|bmp|webp)))\:(\w+)$/i);
  91. if(m) {
  92. if(m[4]!="large") {
  93. document.location = m[1] + ":large?" + m[2];
  94. }
  95. }*/
  96.  
  97. //zhihu
  98. else if( (m = url.match(/^(https?:\/\/.+\.zhimg\.com\/\w+_)(\w+)(\.(jpg|jpeg|gif|png|bmp|webp))$/i)) ){
  99. if(m[2]!="r") {
  100. document.location = m[1] + "r" + m[3];
  101. }
  102. }
  103.  
  104. //douban
  105. else if( (m = url.match(/^(https?:\/\/\w+\.douban(?:io)?\.com\/view\/(?:photo|commodity_story)\/)(\w+)(\/public\/.+\.(jpg|jpeg|gif|png|bmp|webp))$/i)) ){
  106. if(m[2] != "large"){
  107. var ajax = new XMLHttpRequest();
  108. ajax.onreadystatechange=function() {
  109. if(ajax.status==200) {
  110. document.location = m[1] + "large" + m[3];
  111. }else if(ajax.status==404) {
  112. if(m[2] != "photo"){
  113. document.location = m[1] + "photo" + m[3];
  114. }
  115. }
  116. }
  117. ajax.open("GET", m[1]+"large"+m[3], true);
  118. ajax.send();
  119. }
  120. }