Công cụ để tạo CSS spites? [đóng cửa]


126

Có bất kỳ công cụ tốt để làm cho css spites?

Ý TƯỞNG Tôi muốn cung cấp cho nó một thư mục hình ảnh và tệp .css hiện có đề cập đến những hình ảnh đó và để nó tạo ra một hình ảnh lớn được tối ưu hóa với tất cả các hình ảnh nhỏ VÀ thay đổi tệp .css của tôi để tham chiếu đến những hình ảnh đó.

Ít nhất tôi muốn nó lấy một thư mục hình ảnh và tạo ra một sprite lớn và .css cần thiết để sử dụng từng cái làm nền.

Có bất kỳ plugin photoshop tốt hoặc ứng dụng hoàn toàn thổi để làm điều này?



Bạn có thể vui lòng giải thích thêm một chút không, bạn có đang cố gắng biên dịch tất cả các họa tiết trên một hình ảnh lớn hơn và sau đó sử dụng css để hiển thị phần của hình ảnh có chứa sprite đúng không. (kỹ thuật cửa trượt)
teh_noob

1
Có cách nào để thay đổi màu nền để tôi có thể thấy các biểu tượng màu trắng của mình trên spritepad không?
Jim

24
Tôi thực sự không hiểu tại sao điều này đã bị đóng cửa ?? Dường như có rất nhiều câu trả lời hữu ích. Đây có thể là câu hỏi của Superuser vì tôi không đề cập đến bất kỳ ngôn ngữ lập trình cụ thể nào nhưng tôi thích câu trả lời tôi nhận được và rõ ràng chúng hữu ích với nhiều người.
Simon_Weaver

3
Xin chúa đừng xóa câu hỏi này, đây là danh sách hữu ích nhất trên internet cho vấn đề này và chắc chắn có liên quan đến lập trình (ngay cả khi đó không phải là câu hỏi lập trình mỗi lần nói) . Đây chắc chắn là một lời kêu gọi phán xét và không nên bị các mod đóng cửa; đó là những gì hệ thống đóng phiếu bầu của cộng đồng dành cho ....
BlueRaja - Danny Pflughoeft

Câu trả lời:


46

Điều này sẽ làm 90% công việc cho bạn: CSS Sprite Generator . Bạn vẫn sẽ cần phải tự chỉnh sửa các quy tắc, nhưng công cụ sẽ cung cấp cho bạn các đoạn mã bạn cần cho tệp CSS mới.


@ben hoàn hảo! giả sử nó hoạt động ;-)
Simon_Weaver

1
Tôi hơi không hài lòng với công cụ này vì vậy tôi bỏ chọn nó là câu trả lời đã chọn của mình. cuối cùng nó đã cắt xén hình ảnh của tôi và nó không giải thích rõ lý do tại sao nó để lại những khoảng trống lớn giữa các hình ảnh
Simon_Weaver

Tôi không thích giải pháp này, mặc dù tôi đoán nó hoạt động tốt. SpriteMe dường như hoạt động tốt hơn nhiều.
Chuck Le Mông

2
vấn đề với công cụ này là hình ảnh không có chất lượng đầy đủ.
Jim

50

Instant Sprite là một trình tạo sprite CSS trong trình duyệt mà tôi đang làm việc. Nó thực sự nhanh, nhưng không có nhiều tính năng như một số tính năng khác. Hiện tại nó chỉ hoạt động trong Firefox hoặc Chrome, vì nó sử dụng JavaScript FileReader và HTML Canvas để tạo các họa tiết bên trong trình duyệt web mà không cần tải lên.


1
Wow, thật là một công cụ tuyệt vời. Cảm ơn!
Sông Vivian

Tôi đã sử dụng công cụ của bạn để làm việc trên một số trang web sản xuất kể từ khi bạn đăng ở đây. Nó rất đơn giản và dễ dàng.
Sông Vivian

7
+1. Công cụ của bạn tốt hơn nhiều so với phần còn lại tôi đã thử.
Ed Bayiates

3
đây là cách trực quan nhất ... cảm ơn ... (mặc dù, nó nên bao gồm bố cục "thông minh" của các họa tiết để giảm thiểu các vấn đề về hiệu suất)
kumarharsh

2
Cảm ơn mọi người! @Harsh, tôi đồng ý về cách bố trí - Tôi đã bắt đầu thử nghiệm cách đây khá lâu nhưng chưa bao giờ nó hoạt động được: github.com/bgrins/InstantSprite/tree/bin-pack
Brian Grinstead

31

Bây giờ có Sprite Me của Steve Souder. Chỉ cần thử nó và nó có vẻ hoạt động khá tốt.

Đây là liên kết http://spriteme.org/ và đây là bài đăng blog thông báo nó.

http://www.stevesouders.com/blog/2009/09/14/spriteme/


2
+1 Điều này rất dễ sử dụng: Chỉ cần điều hướng đến trang bạn muốn và nhấp vào bookmarklet SpriteMe ... Nó tự động tạo ra hình ảnh và CSS!
Chuck Le Mông

Đây là một công cụ tuyệt vời, nhưng, nó yêu cầu một tệp ZIP của hình ảnh của bạn và thứ tự nó đặt các họa tiết của bạn là thứ tự ZIP. Công cụ của Brian dưới đây cho phép bạn tải lên các tệp và kéo và thả để thay đổi thứ tự.
Ed Bayiates

Tôi thích rằng nó có sẵn mã nguồn miễn phí
lkraav

13

Điều này có vẻ đầy hứa hẹn:

http://csssprites.org/

Ngoài ra tôi tìm thấy bài viết này có một số thông tin hữu ích, và thậm chí một số bình luận độc giả đáng đọc.

Ngoài ra, rõ ràng bộ công cụ web của google có một cái gì đó - vì vậy nếu bạn đang sử dụng nó có thể đáng để kiểm tra.


Có vẻ như trang này không hoạt động nữa ...
Bob

smartsprites.osinski.name đã được đổi tên thành csssprites.org , vì vậy tôi đã chỉnh sửa nó cho bạn. Nó dường như là một trong số ít các tùy chọn có thể được tích hợp vào quá trình xây dựng, từ những gì tôi đã thấy ở đây.
ripper234

9

Điều này là hoàn toàn hợp pháp. Sprite đã lưu IMHO là một khóa, do đó, chỉ những hình ảnh và dòng mã có liên quan mới phải thay đổi theo thời gian, thay vì tính toán lại toàn bộ bộ tọa độ với mỗi thay đổi nội dung hình ảnh.
lkraav


6

tìm thấy điều này khá nhanh rằng giới hạn tải lên 500K có thể là một nỗi đau. mã nguồn có sẵn ở đây


Tại sao tải lên 500kb là một nỗi đau? Tôi có thể không bao giờ muốn tải lên> 100kb
Simon_Weaver

Tôi nói nó 'có thể' là một nỗi đau. Nó sorta phụ thuộc vào ứng dụng không? .. Một tệp zip chứa đầy đủ các PNG kích thước trung bình, ví dụ, trên một lưới khá lớn ~ ~ có thể ~ chạy gần với số này. nếu tất cả bitmap nhỏ của nó thì chắc chắn / không có thăm dò.
Scott Evernden

1
ya nhưng toàn bộ điểm của css spites là để ngăn chặn rất nhiều hình ảnh nhỏ được tải với nhiều yêu cầu. nếu bạn thực sự có nhiều sprite nhỏ thì sẽ mất nhiều thời gian để tải trong đó không có thời gian nào được hiển thị. tốt nhất để giữ chúng tôi sẽ nghĩ nhiều nhất là 100kb. bạn luôn có thể thực hiện một số
Simon_Weaver

tôi làm rất nhiều việc với hình ảnh có thể không phải bitmap css nhỏ. Vì vậy, có lẽ đó là lý do tại sao tôi đã đưa ra cảnh báo. nhu cầu của bạn là khác nhau / ok. 500kb sẽ đến trong một giây trên hầu hết các băng thông rộng. tôi là người đầu tiên cung cấp câu trả lời được chấp nhận cho truy vấn của bạn và ở đây tôi xuống ~ bỏ phiếu và bảo vệ ngôn ngữ của tôi? sao cũng được ...
Scott Evernden

Đó là một nỗi đau đối với tôi, vì những hình ảnh mà tôi bắt đầu kết thúc là một bó có kích thước lớn hơn giới hạn đó, vì vậy tôi phải cắt bỏ hoặc tối ưu hóa trước khi tôi có thể sử dụng nó.
Kzqai


4

Vẫn chưa rõ nếu nó sẽ đưa nó vào khung ASP.NET cốt lõi nhưng đây là một dự án mã hóa của Microsoft cho csssprites:

http://aspnet.codeplex.com/release/view/50869

nếu bạn thích nó - sử dụng nó - hoặc chỉ thích ý tưởng thì thêm một bình luận. Tôi nghĩ rằng đây sẽ là một điều tuyệt vời để có trong khung công tác ASP.NET. Cá nhân tôi đã không sử dụng nó (tôi phải tự phát minh ra bánh xe) nhưng nó đã được đánh giá tốt.


Nó bao gồm các thành phần sau:

  • API để tự động tạo các họa tiết và hình ảnh nội tuyến
  • Kiểm soát và trợ giúp cung cấp cách gọi thuận tiện vào API

Các tính năng được thêm vào trong phiên bản thứ hai:

  • Điều khiển liên kết CSS cho Biểu mẫu web (chọn tệp CSS thích hợp cho trình duyệt của người dùng, nhưng không hiển thị hình ảnh)
  • Sử dụng đường dẫn thư mục tùy chỉnh khác với App_Sprites
  • Thay đổi hướng ốp lát của hình ảnh sprite
  • Hợp nhất CSS được tạo với CSS của người dùng

Các tính năng đang được xem xét để phát hành trong tương lai:

  • Tự động chọn màu nền sprite hiệu quả nhất
  • Tự động thu nhỏ CSS được kết xuất
  • Biên dịch với .NET 3.5

4

Chỉ cần sử dụng http://sprites.scherpontwikkeling.nl/ nó cũng có thể tạo các họa tiết từ URL của trang web ... bạn có thể tích hợp các họa tiết của mình sau khi phát triển trang web của mình. Nó rất dễ sử dụng;)


3

Không phải là một câu trả lời trực tiếp mà là cho các nhà phát triển và nhà tích hợp web đồng nghiệp của tôi, hãy xem xét đơn giản là sắp xếp từng sprite với quyền hạn của hai; ví dụ: lưới 16 pixel hoặc 32 pixel. Nó làm cho việc tính toán bù đắp trong tệp CSS dễ dàng hơn nhiều. Tất cả khoảng trắng giữa không quan trọng vì định dạng gifd và png nén rất tốt.


mẹo hay, mặc dù tôi chủ yếu cố gắng kết hợp các tiêu đề văn bản (mỗi 1-2kb) vào một tệp. Tôi không lo lắng quá nhiều về khoảng trắng bởi vì tôi biết nó sẽ bị nén - tôi hoàn toàn không hiểu tại sao các công cụ để tạo ra các sprite lại tạo ra nhiều như vậy
Simon_Weaver

Một cảnh báo cho điều này - trong khi khoảng trắng trong ảnh sẽ được nén để vận chuyển, nó được mở rộng và chiếm bộ nhớ khi tải trình duyệt. Việc sử dụng mù các công cụ tạo sprite tự động có thể dẫn đến một số hình ảnh lớn, có thể tăng vọt sử dụng bộ nhớ trên các trang đó. Một số chăm sóc là cần thiết trong việc nhóm các hình ảnh để tạo thành các tấm sprite để giữ điều này trong giới hạn hợp lý.
Sam Foster

Sam: Đúng vậy! Tìm thấy điều này sau. Nếu hình ảnh sprite rất rộng hoặc cao thì đó là điều cần xem xét! Đặc biệt là cho các ứng dụng điện thoại di động (ít bộ nhớ). Simon: khoảng trắng có lẽ là do những hạn chế của CSS. Ngay cả khi bạn sử dụng không lặp lại trên nền, hình ảnh sprite sẽ hiển thị thông qua phần đệm, chiều cao dòng và về cơ bản tất cả các khu vực nền của phần tử ngoại trừ lề và viền. Nói ví dụ bạn có một biểu tượng cho một liên kết. Nếu liên kết sẽ trải dài các dòng khác nhau thì các biểu tượng khác của sprite có thể hiển thị thông qua. Thêm đủ khoảng trắng làm cho điều này trở nên "kiên cường" hơn.

@Simon_Weaver - Dựa trên phản hồi của mọi người ở đây, tôi đã đăng một công cụ sprite đơn giản là stackoverflow.com/a/13281578/1162141
technosaurus


2

Nếu bạn thích Java, thì bạn có thể sử dụng GWT 1.5+ đi kèm với một thứ gọi là " ImageBundle ." Trình biên dịch GWT sẽ xử lý tất cả các chi tiết khó chịu cho bạn. Bạn thậm chí sẽ không phải viết mã một dòng JavaScript hoặc viết bất kỳ CSS nào.


2

Đây là một kịch bản kết hợp hình ảnh thông qua một tập lệnh Photoshop thành các họa tiết CSS . Nó sẽ không làm một bản đồ sprite như bạn yêu cầu, nhưng nó sẽ kết hợp các hình ảnh thành bội số của hai (2, 4, 8) nếu chúng có cùng kích thước. Tôi thích kết hợp các hình ảnh tương tự (bình thường, di chuột, được chọn, cha mẹ của lựa chọn) hơn là có tất cả các hình ảnh trong một tệp.



2

Có một công cụ mới được gọi là ActiveSprites, một phần của đá quý active_assets.

Github: http://bitly.com/eRTwU4

Bạn sử dụng một dsl ruby ​​để xác định các họa tiết của bạn và sau đó thực hiện "cào cào" và các họa tiết và biểu định kiểu tương ứng được tạo.

Đó là rad!

Đây là một số mã mẫu,

# config/sprites.rb
Rails.application.sprites do
  sprite 'sprites/sprite1.png' => 'sprites/sprite1.css' do
    _'sprite_images/sprite1/1.png' => 'a.one'
    _'sprite_images/sprite1/2.png' => 'span.two'
  end
end

2

https://github.com/northpoint/SpeedySprite

Công cụ này có một cách tiếp cận mới trong đó nó tập hợp các hình ảnh bạn yêu cầu khi đang di chuyển dưới dạng dịch vụ http. Điều này làm cho toàn bộ quá trình khá đơn giản (không cần tiền xử lý, thay đổi hình ảnh bất cứ lúc nào): Bạn bắt đầu dịch vụ và sau đó tham chiếu bất kỳ hình ảnh nào bạn muốn trong HTML của mình:

<link href="css/my-images-dir/" rel="stylesheet">
<div class="my-image-name-here" />

Vì nó động, bạn thậm chí có thể tạo các họa tiết từ một bộ ảnh động như trang hình thu nhỏ. Mặc dù không hỗ trợ JPEG, nhưng PNG và GIF hoạt động tốt.


1

Tôi khuyên bạn nên sử dụng Sprite Master Web . Tôi tự động tạo các tấm sprite và xuất mã CSS cho bạn. Nó luôn cố gắng tạo ra các tấm sprite nhỏ nhất với các thuật toán tiên tiến.

Đây là một ảnh chụp màn hình và video youtube

nhập mô tả hình ảnh ở đây


Đáng chú ý, đây không phải là một ứng dụng miễn phí hoặc nguồn mở nhưng có giá khá cao ở mức 3,99 đô la. Nó được xây dựng tốt và nén PNG tốt.
t.mikael.d

Mac chỉ. Bummer, cái này có vẻ đầy hứa hẹn.
Mahn

1

Không có công cụ nào trong số này đáp ứng yêu cầu của tôi, vì vậy tôi đã viết một công cụ sử dụng thư viện hình ảnh nhỏ của Mark Tylers, mtpixel (hiện là một phần của mtcelledit ) Nó không siêu rộng nhưng có thể dễ dàng mở rộng thông qua các chức năng được xây dựng của mtpixel bao gồm: thang độ xám, đảo ngược màu , xoay, làm sắc nét, định lượng, posterize, lật (dọc và ngang), biến đổi, rgb-> được lập chỉ mục, lập chỉ mục-> rgb, phát hiện cạnh, chạm nổi, vẽ đa giác, văn bản và nhiều hơn nữa.

Tất cả những gì bạn làm là truyền cho nó một tập hợp các hình ảnh dưới dạng args (hỗ trợ png, gif và jpeg) và nó sẽ xuất ra một pgb rgb có tên là sprite.png cùng với dữ liệu cắt ảnh hữu ích cho thiết bị xuất chuẩn. Tôi sử dụng nó trong các tập lệnh bash để ghi lại toàn bộ thư mục hình ảnh và xuất dữ liệu cắt để tạo css tự động (với hy vọng cuối cùng sẽ làm cho nó có khả năng thay thế các thẻ img hiện tại một cách tự động bằng một chút sed / awk sáng tạo)

Gói nhị phân cho con chó con linux sẽ ở đây:

http://murga-linux.com/puppy/viewtopic.php?t=82009

Trường hợp sử dụng của tôi chỉ yêu cầu ghép các hình ảnh theo chiều dọc vào một png mới, vì vậy đó là tất cả, nhưng mã nguồn của tôi là miền công cộng và thư viện mtcelledit là gpl3. Với mtpixel được liên kết tĩnh, nhị phân là <100kb (chỉ một vài kb khi được liên kết động) và chỉ có các phụ thuộc khác là libpng, libjpeg và libgif (và freetype với mtpixel chính thức, nhưng tôi không cần hỗ trợ văn bản, vì vậy tôi không cần hỗ trợ văn bản, vì vậy tôi không cần hỗ trợ văn bản đã nhận xét các bit freetype trong bản dựng tĩnh)

thoải mái sửa đổi cho nhu cầu của riêng bạn:

#include <stdlib.h> 
#include <stdio.h> 
#include <string.h> 
#include <mtpixel.h> 

int main( int argc, char *argv[] ){ 
int i=0,height=0,width=0,y=0; 
mtpixel_init(); 
mtImage *imglist[argc]; 
argc--; 
do{   imglist[i] = mtpixel_image_load( argv[i+1] ); 
   height+=imglist[i]->height; 
   if (imglist[i]->width > width) width=imglist[i]->width; 
} while (++i < argc); 
imglist[argc]=mtpixel_image_new_rgb(width,height); 
imglist[argc]->palette.trans=0; 
i=0; 
do{   if (imglist[i]->type == MTPIXEL_IMAGE_INDEXED) 
      mtpixel_image_paste(imglist[argc],mtpixel_image_to_rgb(imglist[i]),mtpixel_brush_new(),0 ,y); 
   else mtpixel_image_paste(imglist[argc],imglist[i],mtpixel_brush_new(),0 ,y); 
   printf("name=%s;width=%d;height=%d;y_offset=%d\n",argv[i+1],imglist[i]->height,imglist[i]->width,y); 
   y+=imglist[i]->height; 
   mtpixel_image_destroy( imglist[i] ); 
}while (++i < argc); 
   mtpixel_image_save( imglist[argc], "sprite.png", MTPIXEL_FILE_TYPE_PNG, 5 ); 
mtpixel_quit(); 
return 0; 
}

0

Nếu bạn đang sử dụng .net, hãy xem http://www.RequestReduce.com . Nó không chỉ tự động tạo tập tin sprite mà còn thực hiện nó một cách nhanh chóng thông qua một HTTPModule cùng với việc hợp nhất và thu nhỏ tất cả CSS. Nó cũng tối ưu hóa hình ảnh sprite bằng cách sử dụng lượng tử hóa và nén không mất dữ liệu và nó xử lý việc phục vụ các tệp được tạo bằng cách sử dụng các tiêu đề ETags và Expires để đảm bảo bộ nhớ đệm trình duyệt tối ưu. Việc thiết lập không quan trọng chỉ liên quan đến một thay đổi web.config đơn giản. Xem bài đăng trên blog của tôi về việc áp dụng nó bởi thư viện Microsoft Visual Studio và MSDN Samples.


0

Gần đây tôi tìm thấy công cụ này: SpriteRight http://spriterightapp.com/

SpriteRight là một trình tạo spritesheet CSS cho Mac cho phép bạn nhập hình ảnh hoặc biểu định kiểu hiện có của mình. Làm cho trang web của bạn tải nhanh hơn, cắt giảm chi phí băng thông và tiết kiệm thời gian. SpriteRight thậm chí còn tạo mã CSS một cách nhanh chóng.


Đáng chú ý, đây không phải là một ứng dụng miễn phí hoặc nguồn mở nhưng có giá khá cao ở mức 4,99 đô la. Nó được xây dựng tốt và thực hiện nén PNG tốt, nhiều chức năng hơn so với "Sprite Master Web" ở trên.
t.mikael.d

Và nó chỉ là mac.
Mahn
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.