Results 41 to 50 of 96
-
7th Jan 2010, 03:36 AM #41Banned
Um, either I'm confused, or it actually is nothing new. Open up your FTP client, change file extension .exe to .png and upload it? Seems as simple as that.
-
7th Jan 2010, 03:48 AM #42BannedWebsite's:
hd-eroticpictures.comSECUR - u are confused
-
7th Jan 2010, 03:49 AM #43
-
7th Jan 2010, 04:01 AM #44Member
-
7th Jan 2010, 04:59 AM #45MemberWebsite's:
WarezDominator.com EliteDDL.com ProxyDominator.com PornDominator.comSo what your trying to do is convert data into an image.
Kind of like how binary code work, but even better
Am i right?
-
7th Jan 2010, 07:38 AM #46OPRespected Developer
Erm... Yes... But then erm...
Let's just say yes.
-
7th Jan 2010, 08:44 AM #47Respected DeveloperWebsite's:
X4B.orgIve actually seen it done before.
Something like this, off the top of my head would suffice.
Code:function file2image($filename,$image){ $h = $w = floor(filesize($filename)/2); $h += ceil((filesize($filename)/2-$w)/$w); $gd = imagecreate($w,$h); $fp = fopen($filename,'rb'); $wc = $hc =0; $color = array(); for($i=0;$i<=255;$i++){ $color[$i] = imagecolorallocate($gd,$i,$i,$i); } while(!feof($fp)){ $r = fread($fp,1); imagesetpixel($gd,$wc,$hc,$color[ord($r)]); $wc++; if($wc>$w){ $wc = 0; $hc++; } } imagepng($gd,$image,9,PNG_NO_FILTER); imagedestroy($gd); } function image2file($filename,$image){ $fp = fopen($filename,'wb'); $gd = imagecreatefrompng($image); list($w,$h) = getimagesize($image); for($ih=0;$ih<$h;$ih++){ for($iw=0;$iw<$w;$iw++){ $rgb = imagecolorat($gd,$iw,$ih); fwrite($fp,chr($rgb)); } } imagedestroy($gd); fclose($fp); }
-
7th Jan 2010, 09:47 AM #48Respected DeveloperWebsite's:
X4B.orgOk heres a better script with an actual file format. Tell me what you think HyperZ, you can make a desktop extracter if you want
Code:<? $im = new ImageContainer('file.txt','image'); $im->CreateSplit(1024*50);//50kb split. /* Note: this is filesized splits not the output image size, the output size will depend on compression, if its text you can expect a output size of roughly 20% of the file else if its actually binary you can expect around 20% overhead. */ $im2 = new ImageContainerExtract('image0.png'); $im2->Extract_File('php://output'); error_reporting(E_ALL); class ImageContainer { private $file = ''; private $number_total = 0; private $out = ''; function ImageContainer($file,$out){ $this->file = $file; if(!file_exists($file)){ throw new Exception('File does not exist'); } $this->out = $out; } function CreateSplit($split){ $fs = filesize($this->file); if($split>$fs){ $split = $fs; } $this->number_total = ceil($fs/$split);//Total number of splits $fp = fopen($this->file,'rb'); $i = 0; while($fs>0){ $h = $w = floor(sqrt($split)); $h += ceil((sqrt($split)-$w)/$w); $fs -= $h*$w; $this->file2image($i,$fp,$this->out.$i.'.png',$w,$h,$split); $i++; } fclose($fp); } function file2image($split_no,$fp,$image,$w,$h,$split){ $header = '[I]'.dechex($split_no).'.'.dechex($this->number_total).'.'.base64_encode(basename($this->file)).'|'; if(strlen($header)>$w*$h-$split){ $h++; } $gd = imagecreate($w,$h); $color = array(); for($i=0;$i<=255;$i++){ $color[$i] = imagecolorallocate($gd,$i,$i,$i); } $wc = $hc =0; for($hc=0;$hc<$h;$hc++){ for($wc=0;$wc<$w;$wc++){ $r = ''; if($header) { $r=$header{0}; $header = substr($header,1); }else $r = fread($fp,1); imagesetpixel($gd,$wc,$hc,$color[ord($r)]); } } imagepng($gd,$image,9,PNG_NO_FILTER); imagedestroy($gd); } } class ImageContainerExtract { private $file = ''; private $efile = ''; private $data = array(); private $parts = 1; function ImageContainerExtract($file){ $this->file = $file; $this->data[0] = $this->decode_image_raw($file); $part_number = $this->ReadHeader(0,true); if($part_number!==0){ throw new Exception('Not first part.'); } for($i=1;$i<$this->parts;$i++){ $filen = str_replace('0.png',$i.'.png',$file); $this->data[$i] = $this->decode_image_raw($filen); } } function ReadHeader($index,$strip=true){ $mark = substr($this->data[$index],0,3); switch($mark){ case '[I]': $endof = strpos($this->data[$index],'|'); $header = substr($this->data[$index],0,$endof); if($strip){ $this->data[$index] = substr($this->data[$index],$endof+1); } list($part_number,$this->parts,$this->efile) = explode('.',$header); $part_number = hexdec($part_number); $this->parts = hexdec($this->parts); $this->efile = base64_decode($this->efile); return $part_number; break; } } function decode_image_raw($image){ $ret = ''; $gd = imagecreatefrompng($image); list($w,$h) = getimagesize($image); for($ih=0;$ih<$h;$ih++){ for($iw=0;$iw<$w;$iw++){ $rgb = imagecolorat($gd,$iw,$ih); $ret .= chr($rgb); } } imagedestroy($gd); return $ret; } function Extract_File(){ $fp = fopen($this->efile,'wb'); foreach($this->data as $d){ fwrite($fp,$d); } fclose($fp); } } ?>
Anyway would be nice to hear your insight on my format, Im thinking about adding md5 and some other stuff (will add a different format specifier other than [I] to keep it backwards compatible)
-
7th Jan 2010, 11:41 AM #49OPRespected Developer
Lol at the idea using php for this. It's gonna be way to slow, especially for public use. I suggest you encode and decode a 10mb file to a 1600? pixel png file. After that picture what it will be like with a divx or even a game.
PNG8 is also a bad idea. Increases the size A LOT and makes it very hard to create a file specification for versioning and multi part files. Props for the snippets m8 but using php for this kind of stuff is like trying to beat a Formula 1 with a bike. What would be a nice idead is like Erretic said, a script that spreads images to multiple filehosts.
The spec, if you want it as reference:
Code:// DaToPic - Data To Picture Transcoder // ============================================= #light open System open System.Drawing open System.Drawing.Imaging open System.IO open System.Text open System.Threading open System.Threading.Tasks open System.Windows.Forms // ============================================= // ============================================= let MaxFileNameSize = 0xff // 255 let FileVersion = 0x01uy // 1 let DefaultExt = ".png" let mutable DefaultImgRes = new Point(1600, 1600) let HandShake = [| 0xffuy; 0x04uy; 0x09uy; 0x56uy |] // Unsigned byte array -> 255; 4; 9; 86 [<System.Flags>] type AlphaFlags = | ALL = 0xff // Read all | END = 0x00 // Read nothing | R = 0x11 // Read red | RG = 0x22 // Read red, green // ============================================= (* Calculate the amount of bytes the can be stored in an image of the specified resolution *) let CalcImgBytes x y mult = match (x > 0), (y > 0), (mult > 0) with | true, true, true -> (x * y) * mult | _ -> 0 (* Calculate the amount of images that will be needed to store the data *) let CalcNumOfImgsRequired (dataBytes:int) (imgBytes:int) = let headerSize = 16 + MaxFileNameSize let amount = (float dataBytes) / (float imgBytes) |> ceil |> int if ((float (dataBytes + (amount * headerSize))) / (float imgBytes) |> ceil |> int > amount) then amount + 1 else amount (* Generates the header data that contains the needed info *) let CreateHeader (part:byte) (totalParts:byte) (fileVersion:byte) (fileName:string) = if (fileName.Length > MaxFileNameSize) then let msg = "File name length must be " + string MaxFileNameSize + " or smaller and bigger than 0" let fn = "fileName" raise(new ArgumentOutOfRangeException(fn, fileName.Length, msg)) else HandShake |> (fun bytes -> Array.append bytes HandShake ) |> (fun bytes -> Array.append bytes HandShake ) |> (fun bytes -> Array.append bytes [| (byte fileName.Length); part; totalParts; fileVersion |] ) |> (fun bytes -> Array.append bytes (Encoding.UTF8.GetBytes(fileName)) ) |> Seq.ofArray (* Generates a 'usable' filename *) let DoCorrectFileName (fileInfo:FileInfo) = if (fileInfo.Name.Length > MaxFileNameSize) then if (fileInfo.Name.Contains(".")) then fileInfo.Extension.ToCharArray() |> Array.append (fileInfo.Name.ToCharArray(0, MaxFileNameSize - (fileInfo.Extension.Length - 1))) |> string else fileInfo.Name.ToCharArray(0, MaxFileNameSize) |> string else fileInfo.Name (* Creates ready to use data out of which we can generate our images *) let CreateImages file targetDirectory = let fileInfo = new FileInfo(file) //let rawData = File.ReadAllBytes(file) let fileName = DoCorrectFileName fileInfo let numOfImgs = CalcNumOfImgsRequired (int fileInfo.Length) (CalcImgBytes DefaultImgRes.X DefaultImgRes.Y 3) use bmp = new Bitmap(DefaultImgRes.X, DefaultImgRes.Y, PixelFormat.Format32bppArgb) use fs = fileInfo.OpenRead() let rec loop i savedFiles = if (i < numOfImgs) then printfn "Processing Image %i of %i" (i + 1) numOfImgs for y in [ 0 .. bmp.Height - 1 ] do for x in [ 0 .. bmp.Width - 1 ] do match ((fs.Length - 1L) - fs.Position) with | 0L -> bmp.SetPixel(x, y, Color.FromArgb(int AlphaFlags.END, 0x00, 0x00, 0x00)) | 1L -> bmp.SetPixel(x, y, Color.FromArgb(int AlphaFlags.R, fs.ReadByte(), 0x00, 0x00)) | 2L -> bmp.SetPixel(x, y, Color.FromArgb(int AlphaFlags.RG, fs.ReadByte(), fs.ReadByte(), 0x00)) | _ -> bmp.SetPixel(x, y, Color.FromArgb(int AlphaFlags.ALL, fs.ReadByte(), fs.ReadByte(), fs.ReadByte())) let savePath = (*targetDirectory + "\\" +*) DateTime.Now.Ticks.ToString("x") + DefaultExt bmp.Save(savePath) [ savePath ] |> (fun s -> List.append s savedFiles) |> loop (i + 1) else savedFiles loop 0 List.empty<string> |> Seq.ofList (* Creates ready to use data out of which we can generate our images *) let CreateImages2 file targetDirectory = let fileInfo = new FileInfo(file) //let rawData = File.ReadAllBytes(file) let fileName = DoCorrectFileName fileInfo let numOfImgs = CalcNumOfImgsRequired (int fileInfo.Length) (CalcImgBytes DefaultImgRes.X DefaultImgRes.Y 3) let ticks = DateTime.Now.Ticks.ToString("x") use fs = fileInfo.OpenRead() Parallel.For(0, numOfImgs - 1, (fun i -> use bmp = new Bitmap(DefaultImgRes.X, DefaultImgRes.Y, PixelFormat.Format32bppArgb) use g = Graphics.FromImage(bmp) //printfn "Processing Image %i of %i" (i + 1) numOfImgs for y in [ 0 .. DefaultImgRes.Y - 1 ] do for x in [ 0 .. DefaultImgRes.X - 1 ] do match ((fs.Length - 1L) - fs.Position) with | 0L -> g.DrawRectangle(new Pen(Color.FromArgb(int AlphaFlags.END, 0x00, 0x00, 0x00)), x, y, 1, 1) | 1L -> g.DrawRectangle(new Pen(Color.FromArgb(int AlphaFlags.R, fs.ReadByte(), 0x00, 0x00)), x, y, 1, 1) | 2L -> g.DrawRectangle(new Pen(Color.FromArgb(int AlphaFlags.RG, fs.ReadByte(), fs.ReadByte(), 0x00)), x, y, 1, 1) | _ -> g.DrawRectangle(new Pen(Color.FromArgb(int AlphaFlags.ALL, fs.ReadByte(), fs.ReadByte(), fs.ReadByte())), x, y, 1, 1) let part = match (i < 10), (i < 100) with | true, true -> "00" + i.ToString() | false, true -> "0" + i.ToString() | _, _ -> i.ToString() let savePath = (*targetDirectory + @"\" +*) part + "_" + ticks + DefaultExt ignore //bmp.Save(savePath) )) |> ignore ticks
-
7th Jan 2010, 11:46 AM #50Member
So when do we get the pre-alpha KWWH test build?
Sponsored Links
Thread Information
Users Browsing this Thread
There are currently 1 users browsing this thread. (0 members and 1 guests)
Similar Threads
-
Random Text & Images In Signatures
By zac2613 in forum phpBBReplies: 0Last Post: 10th Jan 2012, 06:36 AM -
How to recover deleted or lost data, file, photo on Mac with Data Recovery software
By Jack20126 in forum General DiscussionReplies: 0Last Post: 20th Dec 2011, 03:37 AM -
Random.org generated massive data
By BlaZe in forum News & Current EventsReplies: 3Last Post: 8th Jul 2011, 06:50 AM -
Random Funny Images!
By xfernanx in forum General DiscussionReplies: 1Last Post: 28th Oct 2010, 04:31 AM
themaCreator - create posts from...
Version 3.47 released. Open older version (or...